CakePHPにMigrations Pluginを導入する
CakePHPにMigrations Pluginを導入したときのメモ。
参考リンク:CakeDC / migrations – GitHub
Migrations Pluginの導入
以下は、CakePHPで制作するアプリケーションをGitで管理している場合の手順です。Gitで管理していない場合は、Pluginディレクトリに直接Migrationsのファイル群を設置してください。
1 2 3 4 5 | # CakePHPのルートディレクトリへ移動 cd cakephp_root_dir # Migrations PluginをGitサブモジュールとして追加 git submodule add git://github.com/CakeDC/migrations.git app/Plugin/Migrations |
Migrations Pluginの設置が完了したら、プラグインのロード設定を行いましょう。
1 2 3 4 5 | // プラグインのロード設定 CakePlugin::load('Migrations'); // 配列もOK CakePlugin::load(array('DebugKit', 'Migrations')); |
マイグレーションの生成
マイグレーションの生成は以下の通り。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | # CakePHPのルートディレクトリへ移動 cd cakephp_root_dir/ # 0. 初めてマイグレーションを実行する場合は、schema_migrationsテーブルを初期化 # (実行しなくても1. でマイグレーションを生成するときに自動的にやってくれますが) app/Console/cake Migrations.migration run all -p Migrations # 1. 最初のマイグレーションを生成 app/Console/cake Migrations.migration generate # 2. スキーマ情報を変更する前にスキーマ情報をdump app/Console/cake schema generate # 3. スキーマに変更を加える # 4. マイグレーションを生成 app/Console/cake Migrations.migration generate |
2. で取得したスキーマ情報と、現在のデータベース定義の差分をチェックして、マイグレーションファイルを生成してくれます。2〜4を繰り返すことで、スキーマ情報のバージョン管理が行えます。
デフォルトでは、モデルが存在しているものだけを抽出します。全てを対象としたい場合は、 -fオプションを付与しましょう。
マイグレーションの実行
生成されたマイグレーションを全て実行するには以下のコマンドを実行します。
1 2 3 4 5 | # CakePHPのルートディレクトリへ移動 cd cakephp_root_dir/ # マイグレーションを実行 app/Console/cake Migrations.migration run all |
その他にも、1つ前のバージョンに戻したり、1つ先のバージョンに進める等、いくつかコマンドが用意されています。GitHubのページに詳しく使い方が掲載されていますので、そちらをご覧ください。
参考リンク:CakeDC / migrations – GitHub