CakePHP2系マイグレーション

コマンド

マイグレーションファイルをもとにアップする
Windows
php app/Console/cake.php Migrations.migration run up
mac/Linux
./Console/cake Migrations.migration run up

スキーマファイルと、DBを比較してマイグレーションファイル生成
Windows
php app/Console/cake.php Migrations.migration generate -f
mac/Linux
./Console/cake Migrations.migration generate -f

参考サイト
https://github.com/CakeDC/migrations/tree/master/Docs/Documentation
http://www.ryuzee.com/contents/blog/6108

初期マイグレーションの作成方法

まず、マイグレーションを管理するためのテーブルを作成

Console/cake Migrations.migration run all -p

※もしschema.phpが存在していれば、一旦削除して以下を実行
※-fオプションはモデルファイルが存在しないテーブルも含めるため

Console/cake Migrations.migration generate -f

Do you want generate a dump from current database? (y/n)
# schema.phpを現在のDB全体からまるごと行うかどうか y

Do you want to preview the file before generation? (y/n)
# プレビューするかどうか y

Please enter the descriptive name of the migration to generate:
# マイグレーションファイル名

schema.phpを現在のDBの状態で作成したい場合

Console/cake schema generate -f

DB情報の変更の差分を取得してマイグレーションファイル作成

Console/cake Migrations.migration generate -f

※schema.phpがある前提
y選択すると、現在のDBの状態と、schema.phpと比較して差分をマイグレーションとして作成する

マイグレーションファイルを作成して適用

Console/cake Migrations.migration generate

Do you want generate a dump from current database? (y/n)
# schema.phpと比較するかなので n

Do you want to preview the file before generation? (y/n)
# プレビューするかどうか n

Please enter the descriptive name of the migration to generate:
# マイグレーションファイル名

以下のようなファイルがMigration以下にできるのでupに適用時、downに外す時の設定を入れる

public $migration = array(
    'up' => array(
    ),
    'down' => array(
    ),
);

ここではフィールド名を変更のサンプル

public $migration = array(
    'up' => array(
        'rename_field' => array(
            'members' => array(
                'is_available' => 'is_availables'
          )
        )
    ),
    'down' => array(
        'rename_field' => array(
            'members' => array(
                'is_availables' => 'is_available'
          )
        )
    ),
);

参考サイト
https://github.com/CakeDC/migrations/blob/master/Docs/Documentation/Migrations.md

作成したバージョンを適用するコマンド

Console/cake Migrations.migration run up

schema.phpにも反映するコマンド

Console/cake schema generate -f

一つ前のバージョンに戻す場合のコマンド

Console/cake Migrations.migration run down
タイトルとURLをコピーしました