データベースを使う その3 ORMモデル生成
oilコマンドでORM(Object Relation Mapper)モデルのコードを自動生成してみます。
ORMはCRUD(Create、Retrieve、Update、DeleteといったSQL処理)だけでなく、データベーステーブルをオブジェクトにマップして、テーブル間のリレーションまでも面倒を見てくれる非常に強力なシステムです。
ここでは、varchar[32]のnameカラムを持つuserテーブルを生成します(テーブルの命名には少し注意が必要です)。
$ oil g model user name:varchar[32]
上記のコマンドを実行すると、fuel/app/classes/model/user.phpファイルが生成されます。
oilコマンドは$ oil create
で作成したディレクトリで実行することに注意してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php class Model_User extends \Orm\Model { protected static $_properties = array( 'id', 'name' ); protected static $_observers = array( 'Orm\Observer_CreatedAt' => array( 'events' => array('before_insert'), 'mysql_timestamp' => false, ), 'Orm\Observer_UpdatedAt' => array( 'events' => array('before_save'), 'mysql_timestamp' => false, ), ); } |
idはoilによって自動的に付加されます。
fuel/migrationsディレクトリにはusersテーブルをcreateする001_create_users.phpが生成されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?php namespace Fuel\Migrations; class Create_users { public function up() { \DBUtil::create_table('users', array( 'id' => array('constraint' => 11, 'type' => 'int', 'auto_increment' => true), 'name' => array('constraint' => 32, 'type' => 'varchar'), 'created_at' => array('constraint' => 11, 'type' => 'int'), 'updated_at' => array('constraint' => 11, 'type' => 'int'), ), array('id')); } public function down() { \DBUtil::drop_table('users'); } } |
モデルとマイグレーションを生成したら、データベースに反映させましょう。
$ oil r migrate
を実行すると、データベースにテーブルが作成されます。
テーブルにはcreate_atとupdate_atの2つのフィールドが自動で付加されます。
oilコマンドのオプションでこれらのタイムスタンプを省略したりフィールド名を変更することができます。