FuelPHPのマイグレーションの作成と実行方法の流れをサクッとまとめてみました。
目次
マイグレーション機能
マイグレーション機能を活用することで、簡単にDBのテーブルの変更や削除などの操作や管理を行うことできます。
マイグレーションファイルを実行することで、ファイルの中身に基づいてテーブルを生成してくれるため、複数人で開発しているときなどDB環境をあわせるのに役立つ機能となっています。
FuelPHP バージョンを確認
以下のコマンドでFuelPHPフレームワークのバージョンを確認しておきます。
1 2 | $ php oil -v Fuel: 1.8 running in "local" mode |
FuelPHP マイグレーションファイルの自動生成
以下のコマンドでマイグレーションファイルを自動生成します。
オプションのコマンドで、テーブルのカラムを追加することができます。001は最初のファイルの番号で、続けて002、003とファイル名の先頭に追加されます。
1 2 | $ php oil generate migration create_members Creating migration: /var/www/fuel/app/migrations/001_create_members.php |
自動生成されたファイルを確認すると、以下のようになっています。今回は、自動生成されたマイグレーションファイルを編集していきます。
up()は、マイグレーションのテーブル作成コマンド実行時に処理が流れます。down()は反対にテーブル削除実行時に流れます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 001_create_members.php <?php namespace Fuel\Migrations; class Create_members { public function up() { \DBUtil::create_table('members', array( 'id' => array('constraint' => 11, 'type' => 'int', 'auto_increment' => true, 'unsigned' => true), ), array('id')); } public function down() { \DBUtil::drop_table('members'); } } |
FuelPHP マイグレーションファイルの編集
仮としてmembersテーブルのマイグレーションファイルを作成しました。array()の部分は使用しているPHPのバージョンが5.4以上なので[]に置換しておきました。
マイグレーションファイルにインデックスを作成することもできます。インデックスを作成することで、対象のカラムのデータを高速に検索し、取り出すことができます。
データ検索時はインデックスの方を検索するため、大量のデータを格納する場合はインデックスを作成しておきましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | <?php namespace Fuel\Migrations; class Create_members { const TABLE_NAME = 'members'; public function up() { // create table \DBUtil::create_table(self::TABLE_NAME, [ 'id' => ['constraint' => 11, 'type' => 'int', 'unsigned' => true, 'auto_increment' => true], 'name' => ['constraint' => 32, 'type' => 'varchar'], 'type' => ['constraint' => 11, 'type' => 'int', 'unsigned' => true], 'email' => ['constraint' => 1024, 'type' => 'varchar', 'null' => false], 'phone_number' => ['constraint' => 11, 'type' => 'int', 'unsigned' => true], 'status' => ['constraint' => '"active","inactive","banned"', 'type' => 'enum'], 'created_at' => ['type' => 'datetime'], 'updated_at' => ['type' => 'datetime', 'null' => true], 'deleted_at' => ['type' => 'datetime', 'null' => true], ], ['id']); // create index \DBUtil::create_index(self::TABLE_NAME, ['type'], 'idx_type' ); } public function down() { // drop table \DBUtil::drop_table(self::TABLE_NAME); // drop index \DBUtil::drop_index(self::TABLE_NAME, 'idx_type'); } } |
FuelPHP マイグレーションファイルの実行
作成したマイグレーションファイルを以下のコマンドで実行します。
エラーになる場合は、エラーメッセージからマイグレーションファイルを修正しましょう。
1 2 3 | $ php oil refine migrate Performed migrations for app:default: 001_create_members |
データベースを確認すると、テーブルが追加されていることが確認できます。
テーブルを削除する場合は、downコマンドを実行します。するとテーブルが削除されていることが確認できます。
1 2 3 | $ php oil refine migrate:down Reverted migrations for app:default: - 001_create_members |
再度、テーブルを作成するときはupコマンドを実行しましょう。
1 2 3 | $ php oil refine migrate:up Newly installed migrations for app:default: - 001_create_members |
FuelPHP マイグレーションファイルの操作
他にもマイグレーションの操作には、以下のようなコマンドがあります。
現在のマイグレーションのバージョンを取得し、最新の状態に向けてマイグレーションファイルを実行していきます。
1 | $ php oil refine migrate:current |
以下のコマンドで、指定したバージョンに更新します。
1 | $ php oil refine migrate --version='バージョン' |
以上、簡単にマイグレーション作成と実行の流れをまとめてみました。