雰囲気的には Rails のマイグレーションと似ていて,特に違和感無く使えた.
FuelPHP 環境
Vagrant に立てた.
$ oil -v Fuel: 1.7.3 running in "development" mode
テーブルを作る
FuelPHP 本に載ってる例をそのまま試してみた.
まず oil generate migration
で form
テーブルのマイグレーションファイルを自動生成する.
$ oil generate migration create_form name:string[50] email:string[100] comment:string[400] ip_address:string[39] user_agent:string[512] created_at:int updated_at:int Creating migration: /var/www/fuel/fuel/app/migrations/001_create_form.php
マイグレーションファイルを確認する.
Rails と違って,プレフィックスは 001
になってた.999
までマイグレーションファイルが増えたらどうなるんだろう?
$ cat fuel/app/migrations/001_create_form.php <?php namespace Fuel\Migrations; class Create_form { public function up() { \DBUtil::create_table('form', array( 'id' => array('constraint' => 11, 'type' => 'int', 'auto_increment' => true, 'unsigned' => true), 'name' => array('constraint' => 50, 'type' => 'varchar'), 'email' => array('constraint' => 100, 'type' => 'varchar'), 'comment' => array('constraint' => 400, 'type' => 'varchar'), 'ip_address' => array('constraint' => 39, 'type' => 'varchar'), 'user_agent' => array('constraint' => 512, 'type' => 'varchar'), 'created_at' => array('constraint' => 11, 'type' => 'int'), 'updated_at' => array('constraint' => 11, 'type' => 'int'), ), array('id')); } public function down() { \DBUtil::drop_table('form'); } }
次に oil refine migrate
でマイグレーションを実行する.
$ oil refine migrate
Performed migrations for app:default:
001_create_form
MySQL で確認すると form
と migration
テーブルができていた.
mysql> SHOW TABLES; +--------------------+ | Tables_in_fuel-dev | +--------------------+ | form | | migration | +--------------------+ 2 rows in set (0.00 sec)
id
カラムは自動で作られる.
mysql> DESC form; +------------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+------------------+------+-----+---------+----------------+ | id | int(11) unsigned | NO | PRI | NULL | auto_increment | | name | varchar(50) | NO | | NULL | | | email | varchar(100) | NO | | NULL | | | comment | varchar(400) | NO | | NULL | | | ip_address | varchar(39) | NO | | NULL | | | user_agent | varchar(512) | NO | | NULL | | | created_at | int(11) | NO | | NULL | | | updated_at | int(11) | NO | | NULL | | +------------+------------------+------+-----+---------+----------------+ 8 rows in set (0.00 sec)
migration
は Rails における schema_migrations
と同じで,マイグレーションの状況を管理するためのテーブルだと思う.
mysql> SELECT * FROM migration; +------+---------+-----------------+ | type | name | migration | +------+---------+-----------------+ | app | default | 001_create_form | +------+---------+-----------------+ 1 row in set (0.00 sec)
テーブルを消す
せっかくなので oil refine migrate:down
でマイグレーションの down
を試してみた.
$ oil refine migrate:down
Reverted migrations for app:default:
- 001_create_form
ちゃんと DROP TABLE
できた.
mysql> SHOW TABLES; +--------------------+ | Tables_in_fuel-dev | +--------------------+ | migration | +--------------------+ 1 row in set (0.00 sec)
migration
からもレコードが削除されている.
mysql> SELECT * FROM migration; Empty set (0.01 sec)
FuelPHP 本
気になるところを試しながら流し読みしてるところ.
本に載ってる MAMP + NetBeans の開発環境はどうしても嫌だったから Vagrant + IntelliJ でコードを書いてる.
- 作者: 鈴木憲治
- 出版社/メーカー: ラトルズ
- 発売日: 2014/10/25
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (2件) を見る