Skip to content

Instantly share code, notes, and snippets.

@violetyk
Created August 27, 2013 02:06
Show Gist options
  • Save violetyk/6348901 to your computer and use it in GitHub Desktop.
Save violetyk/6348901 to your computer and use it in GitHub Desktop.

CakeDC Migration

設置

https://github.com/CakeDC/migrations

  • vendorなどにMigrationsとして配置
  • bootstrap.phpにプラグインをロードする記述 CakePlugin::load(array('Migrations'));

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

Console/cake Migrations.migration run all -p
Console/cake Migrations.migration generate -f

-fはモデルがないテーブルも含める為。


Do you want generate a dump from current database? (y/n) -> y

Do you want to preview the file before generation? (y/n) -> プレビューを見るならy

Please enter the descriptive name of the migration to generate: 名前をつける。タイムスタンプなどは自動でつくので不要。

Console/Scheme/schema.phpの作成

Console/cake schema generate –f

現在のDBのスキーマとschema.phpを比較して差分をマイグレーションファイルを作成

Console/cake Migrations.migration generate -f
Do you want compare the schema.php file to the database? (y/n) -> y

Please enter the descriptive name of the migration to generate:
> add_adminusers
Generating Migration...

Done.
Do you want update the schema.php file? (y/n)
[y] > y
Cake Schema Shell
---------------------------------------------------------------
Generating Schema...
Schema file exists.
 [O]verwrite
 [S]napshot
 [Q]uit
Would you like to do? (o/s/q)
[s] > o
Schema file: schema.php generated

Config/Migration/配下にマイグレーションファイルが作成される

マイグレーションの実行

Console/cake Migrations.migration run
適用する番号を選ぶ

まとめて適用する場合

Console/cake Migrations.migration run all -p

現在の適用状態の確認

Console/cake Migrations.migration status

スキーマ変更以外のマイグレーション作業

マイグレーションの際にデータ移行やバックアップを行ったり初期データを登録したりしたい場合は、before() や after()の中にテーブルをごにょごにょする処理を実装することになります。

@violetyk
Copy link
Author

テーブルスキーマのキャッシュ残ってるとうまくマイグレーションファイルが作られないので注意。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment