CakePHP3で楽なマイグレーション 覚え書き

CakePHP3で楽なマイグレーション - Qiitaの記事を読んだので、 自分なりにまとめておこうと思う。

CakePHP3マイグレーションの基本

DBAの仕事

1.DB、テーブルを作る
DB、テーブルを用意しよう。
普通に作って大丈夫

2.一発目のマイグレーションファイルの作成
一発目のマイグレーションはコマンドで作ろう

bin/cake bake migration_snapshot Initial

CakePHP3のドキュメントURL(http://book.cakephp.org/3.0/ja/migrations.html#id14 )

3.テーブル定義を変更したらやる事
テーブル定義を変更したら、マイグレーションファイルを作ろう
子万dので 、今のDB状態と直前マイグレーションを行った際のDBの状態を比較して差分のマイグレーションファイルを作成できる

bin/cake bake migration_diff add_hogehoge_fugafuga

↑これでテーブル定義を変更した内容で、マイグレーションファイルを作成できる

DBを使いたい人がやる事(プログラマ)

1.テーブルをまだ何も作っていない場合
DBAが作ったマイグレーションからテーブルを作成できる

bin/cake migrations migrate

DBAががマイグレーションを作るたびにこのコマンドを行う事で、テーブル情報を同期し続けることができる。

2.すでにテーブルがあり、DBAと同じ状態の場合
すでにテーブルがあり、DBAと同じ場合は、
以下のコマンドで、「今のDBの状態はマイグレーションを全て反映した状態である」という状態を作れる。

bin/cake migrations mark_migrated

「phinxlog」というテーブルが作成され、その中にマイグレーションしたログが作成される。

3.DBAの持っているテーブルの状態と違う場合
DBAの持っているテーブルの状態と違う場合は、2パターンの対応方法がある。
・一度全部消してmigrateする ・alter tableや、create tableを行って、DBAの状態に合わせる

前者の場合は、一度まっさらにして、マイグレーションを全て実行する。

bin/cake migrations migrate

後者の場合は、DBAと同じ状態になっているので、Cakeをだます。
(また以下のコマンドを使う)

bin/cake migrations mark_migrated

参考

CakePHP3で楽なマイグレーション - Qiita