phinx
phinx copied to clipboard
Drop table doesn't work as expected
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));
}
/* ... */
}
https://github.com/cakephp/phinx/blob/b2eef811863e6c4e96bac0136263f502424a170f/src/Phinx/Db/Table.php#L716
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?