ORMは、オブジェクト関係マッピングの略。
オブジェクトにDBのテーブルの行をマップし、それらのオブジェクト間の関係を確立する。
・モデルの作成
テーブル名 : 複数形
クラス名 : Model_ + (テーブル名の単数形の大文字始まり)
ファイル名 : (テーブル名の単数形の小文字).php
article.php (テーブル名 : articles)
class Model_Article extends Orm\Model {
}
・主キーの設定
'id'以外の主キーや複数の主キーを使用する場合に設定する。
protected static $_primary_key = array('my_id');
・カラムに型、ラベル、バリデーションを設定
protected static $_properties = array(
'id',
'name' => array(
'data_type' => 'varchar',
'label' => 'Article Name',
'validation => array(
'required',
'min_length' => array(3),
'max_length' => array(20)),
'form' => array('type' => 'text'),
'default' => 'New article',),
'gender' => array(
'data_type' => 'varchar',
'label' => 'Gender',
'form' => array(
'type' => 'select',
'options' => array('m' > 'Male', 'f' => 'Female')),
'validation' => array('required'),),
'created_at' => array(
'data_type' => 'int',
'label' => 'Created At',
'form' => array('type' => false,),), // formには表示されない
'updated_at' => array(
'data_type' => 'int',
'label' => 'Updated At'));
・クエリ実行時のデフォルトの条件を設定
order_byは、定義されていない場合のみ有効。
whereは、他のwhereにANDで追加される。
protected static $_conditions = array(
'order_by' => array('id' => 'desc'),
'where' => array(
array('publish_date', '>', 1370721177),
array('published', '=', 1),),);
・論理削除モデル
\Orm\Model_Soft を継承する。
class Model_Employee extends \Orm\Model_Soft {
}
削除されたtimestampを設定するカラムを指定する。
protected static $_soft_delete = array(
'deleted_field' => 'deleted',
'mysql_timestamp' => true,
);
・使用例
$employee = Model_Employee::find(1);
$employee->delete(); // find()で取得できなくなる
・論理削除モデルを物理削除する場合
$employee = Model_Employee::find(1);
$employee->purge();
・論理削除されたデータを復元する
$employee = Model_Employee::find_deleted(1);
// または
$employee = Model_Employee::deleted(1);
$employee->restore();
// または
$employee->undelete();
0コメント