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