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