2013年1月10日

Yii Framework: データベースマイグレーションファイルを楽に書くには?

自分の中でまとまりつつあるので、データベースマイグレーションを楽に書く方法を書いていきます。

流れとしては以下。
  1. commandMap にてマイグレーションの設定を予め書いておく
  2. カスタマイズしたマイグレーションテンプレートを作成
  3. 既存のデータベースからマイグレーション用にスキーマをダンプしてくれるコマンドを作成
  4. マイグレーションのコマンドを実行し、ファイルを作成


1. commandMap にてマイグレーションの設定を予め書いておく

protected/config/console.php に commandMap を追加します。Yii Guide の ここ らへんで説明されています。テーブルのプレフィックス以外はガイドのやつと同じものですが、以下のように書きます。

2. カスタマイズしたマイグレーションテンプレートを作成

protected/migrations/ に template.php を作成します。どうやって作っていくのかを少し調べてみたんですが、情報が見つけられなかったので、自分になりにですが考えて、以下のようにしました。そのまんま php ファイルの雰囲気で書いて、クラス名だけ  {ClassName} にしただけですが (ちなみにこれそのまま実行すると Parse error が発生します) 。

3. 既存のデータベースからマイグレーション用にスキーマをダンプしてくれるコマンドを作成

これは Yii Guide のコメントにあったコードを元に少し追加したものです。これ です。

4. マイグレーションのコマンドの実行し、ファイルを作成

あとは、php yiic migrate create init でマイグレーションファイルを作成して、 php yiic dumpshema <database_name> で出力されたものをマイグレーションファイルにコピペするだけです。インデックスなどは出力されないので、自分で追加していくことになります。

最後に php yiic migrate で完成!

0 件のコメント:

コメントを投稿