■インストール
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)は過去の別エントリを参照されたし。