- マイグレーションとはDBの構成変更を管理するための仕組み
- CakePHPではマイグレーションファイルを通してDBの構成変更を行なうことで、複数メンバーのDB構成を統一できる
- 実行していないマイグレーションファイルを適応するやり方と
schema.php
からスキーマを再現する2つの方法がある
初期準備
- マイグレーション管理テーブルの作成
- マイグレーションを管理するための
schema_migrations
テーブルを作成
- マイグレーションを管理するための
Console/cake Migrations.migration run all -p
- 初期マイグレーションの作成
-
app/Config/Schema/schema.php
が既に存在する場合は内容の比較を行ってしまうので、一旦削除しておく -
-f
をつけるのはモデルの存在しないテーブルも含めたマイグレーションファイルを作成するため
-
Console/cake Migrations.migration generate -f
- 以下はまだ
schema.php
がないため、現在のデーターベースを丸々dumpするかを聞いているのでyを選択する
Do you want generate a dump from current database? (y/n)
- 以下はマイグレーションファイルにつける名前を入力する。DBへ加える変更の内容(今回は初期のテーブルをマイグレーションにするため
initialMigration
)などの名前にする -
app/Config/Migration/
配下にマイグレーションファイルが作成される - マイグレーションファイルにはタイムスタンプが先頭に自動で付与され、このタイムスタンプがマイグレーションの実行順序を決める
Please enter the descriptive name of the migration to generate:
- また以下のコマンドで現在のデータベースの構成情報が記述されている
schema.php
を作成する。これによってapp/Config/Schema/schema.php
が作成され、以降マイグレーションファイルを自動生成する場合はこのschema.php
とデータベースと比較して作成されるようになる
Console/cake schema generate –f
- マスターデータを用意しておかないと、複数ユーザー間で同じ初期データにならないので必須
初期準備以降
初期のマイグレーションファイルとスキーマが用意出来たら、後は変更があった分のマイグレーションファイルをセットしていく
自動生成と自分でファイルを書く方法がある