Skip to content

Drop table doesn't work as expected #2211

Open
@algorhythm

Description

@algorhythm

The documentation says to use the following code when deleting a table:

$this->table('table')->drop()->save();

https://book.cakephp.org/phinx/0/en/migrations.html#dropping-a-table

But in my opinion it's better using:

$this->table('table')->drop()->update();

...because if the table doesn't exists and when executing Table::executeActions(), the actions will contain DropTable and a dynamically added CreateTable action. That makes no sense.

This is due to the following code:

/**
 * Executes all the pending actions for this table
 *
 * @param bool $exists Whether or not the table existed prior to executing this method
 * @return void
 */
protected function executeActions(bool $exists): void
{
    /* ... */

    // If the table does not exist, the last command in the chain needs to be
    // a CreateTable action.
    if (! $exists) {
        $this->actions->addAction(new CreateTable($this->table));
    }

    /* ... */
}

So am I using the save and update methods in a wrong way and then the documentation needs to be changed or is it a bug?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions