FuelPHPではORMモデルでテーブル間のリレーションを設定出来ます。
例えば
Model_Parent(parentsテーブル)とModel_Child(childrenテーブル)が1:N。
parents.id = children.parent_id。
として
children.gender = 'male' のカラムのみをcreated_atの昇順で取得する$_has_many。
children.gender = 'female'のカラムのみをcreated_atの昇順で取得する$_has_many。
を設定する場合、以下の書き方になります。
(order_byはascの場合、KeyのみでもOKです。)
protected static $_has_many = array(
'children_male' => array(
'key_from' => 'id',
'model_to' => 'Model_Child',
'key_to' => 'parent_id',
'cascade_save' => true,
'cascade_delete' => true,
'conditions' => array(
'where' => array(array('gender', '=', 'male')),
'order_by' => array('created_at' => 'asc'),
),
),
'children_female' => array(
'key_from' => 'id',
'model_to' => 'Model_Child',
'key_to' => 'parent_id',
'cascade_save' => true,
'cascade_delete' => true,
'conditions' => array(
'where' => array(array('gender', '=', 'female')),
'order_by' => array('created_at' => 'asc'),
),
),
);
参考:
使い方は、以下の通りです。
$parent = Model_Parent::find($parent_id); $children_male = $parent->children_male; $children_female = $parent->children_female;
No comments:
Post a Comment