■インストール
composer.jsonに下記を追加。
1 2 3 4 5 6 7 8 9 | { ... "require" : { ... "doctrine/doctrine-migrations-bundle" : "dev-master" ... } ... } |
そしてアップデート。
1 | composer update |
app/AppKernel.phpを編集。
1 2 3 4 5 6 7 | ... $bundles = array ( ... new Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle(), ... ); ... |
app/console コマンドでdoctrine:migrations:…のコマンド群が確認できれば成功。
■Migrationsの初期化
1 | php app/console doctrine:migrations:status |
これで初期化完了。データベース「migration_versions」というマイグレーションのバージョン管理用テーブルが作成される。
■マイグレーションファイルを作成する
エンティティの追加、削除、また変更などがあった際、スキーマアップデートを実行してはいけない。
必ずマイグレーションファイルを生成してからマイグレートを実行するようにする。
具体的にはこう。
例)
何かしらのエンティティを変更、追加、削除した際。
1 2 | # これで最新のマイグレーション履歴との差分を自動的に計算してマイグレーションファイルを生成してくれる。 php app/console doctrine:migrations:diff |
マイグレーションファイルは「app/DoctrineMigrations」以下に「Version[実行日時].php」といった形で生成される。
生成されたマイグレーションファイルのup()メソッドとdown()メソッドを確認して、必要であれば編集する。(基本的にそのまま)
問題がなければ下記コマンドでマイグレーションを実行。
1 | php app/console doctrine:migrations:migrate |
これで差分のSQLが実行されDBが最新の状態になる。
マイグレーションの差し戻し(down)は過去の別エントリを参照されたし。