マイグレーションファイルの作成
データベースの更新サイクルについて
CakeDC Migrationsプラグインを利用したデータベースの更新サイクルは、次の二つがあります。
- Auto-Migration Files
- Manually Creating Migration
Auto-Migration Files
-
もしまだやっていなければ、最初のマイグレーションを行います。
$ Console/cake Migrations.migration run reset
-
次に、現在のデータベースの状況に対応したSchemaファイルを作成します。
$ cake schema generate -f
(スキーマファイルの作り方を尋ねられたら、既存のスキーマファイルを上書きするのであればOverwriteを選択します。Snapshotでも問題ないかは未確認)
オプションの"-f"は、モデルがないテーブルについてもスキーマを作成する場合につけます。
-
この状態で、SQLを使って、テーブルの追加、カラムの変更などを行います。
-
その後、
$ Console/cake Migrations.migration generate -f
で、新しいマイグレーションファイルを作成します。
オプションの"-f"は、モデルがないテーブルについてもマイグレーションファイルを作成する場合につけます。
Do you want compare the schema.php file to the database? (y/n)
と尋ねられたらyと答えて下さい。これで、マイグレーションファイルが出来ました。この新しいマイグレーションファイルに合わせて、スキーマファイルを更新するか尋ねられるので、更新しない(Quit)か、上書き(Overwrite)してください。
保存時の名前は適当につけてください。ファイル名は、入力した名前の前に、現在のタイムスタンプが付きます。
Manually Creating Migration
-
もしまだやっていなければ、最初のマイグレーションを行います。
$ Console/cake Migrations.migration run reset
-
空のマイグレーションファイルを作成します。
$ Console/cake Migrations.migration generate
ここで
Do you want compare the schema.php file to the database? (y/n)
と尋ねられたらnと答えて下さい。これで、マイグレーションファイルが出来ました。
-
マイグレーションファイルを編集してください。たとえば、テーブルを作るのであれば、
'up' => array(
'create_table' => array(
'categories' => array(
'id' => array(
'type' =>'string',
'null' => false,
'default' => null,
'length' => 36,
'key' => 'primary'
),
'name' => array(
'type' =>'string',
'null' => false,
'default' => null
),
'indexes' => array(
'PRIMARY' => array(
'column' => 'id',
'unique' => 1
)
)
)
)
となります。その他の記述法については、
https://github.com/CakeDC/migrations/blob/master/Docs/Documentation/Migrations.md
を参考にしてください。
保存時の名前は適当につけてください。ファイル名は、入力した名前の前に、現在のタイムスタンプが付きます。
-
マイグレーションファイルが出来たら、マイグレーションファイルを実行します。
$ Console/cake Migrations.migration run
一つずつマイグレーションファイルを適用する場合、runではなくupを使います。
その他
現在のマイグレーションの状態は
$ Console/cake Migrations.migration status
で確認できます。
参考サイト
ドキュメント
https://github.com/CakeDC/migrations/tree/master/Docs/Documentation
チュートリアル
https://github.com/CakeDC/migrations/blob/master/Docs/Tutorials/Quick-Start.md