CakePHP マイグレーション changeとupとdown

CakePHPのマイグレーションファイルでは三つのメソッド、change,up,downを使うことができる。しかし使うときはchangeのみかupとdownを両方使う場合に限られる。なぜかというとchangeを使用した場合はupとdownメソッドは無視されるからだ。

up
migration migrate時に実行される

down
migration rollback時に実行される

change
migration migrate時に実行され、さらに migration rollbackすると自動的にdownメソッドを推測しrollbackしてくれる

これだけみるとchangeだけ使えばいいように見えるが一部の処理はrollbackするときの処理が推測できないため、推測不可能な処理をchangeで行うのは適さない。具体的には以下のコマンドのみがrollback時の処理を推測することができるので以下のコマンドしか使わない場合はchangeを使い、そうではない場合はupメソッドとdownメソッドを使うのが良いだろう。

  • createTable
  • renameTable
  • addColumn
  • renameColumn
  • addIndex
  • addForeignKey