【Symfony2.3】DoctrineMigrationsBundle自分用まとめ。

■インストール

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