FuelPHP 複数データベースへの migration


FuelPHP で複数データベースへ migration を行うやり方を説明します。 FuelPHP 1.7.2 を想定しています。

FuelPHP では php oil g model item name:string などのようにすると、 model と migration のためのコードが生成されます。 php oil g scaffold ... とやった場合にも migration のコードが生成されます。 ここで生成される migration コード に手を加えることで 複数データベースに対応させることができます。

変更前のコード

変更後のコード

db_config_key というのを付け加えました。 このパラメータでデータベースを指定できます。 具体的には config/db.php 内 のキーになります。 たとえば 'default' なんてのが入ります。 何も指定がなければ 'default' が採用されます。

このようにして複数データベースに対応させることができます。 migration の コードごとに データベースを書き換えればいいですからね。

Model の コードを活用した書き方

Model を利用してやってみましょう。

Model_ItemOrm を使っているという前提の話ですが、 データベースの指定に Model_Item::connection() を、 テーブルの指定に Model_Item::table() を、 主キーの指定に Model_Item::primary_key() を使っています。 このようにすると、 model の中に書いておけば migration のコードを変更しなくても済みます。 (ただし 既存テーブルについて model の テーブル名や $_connection を変更する場合には注意が必要になります。)