【发布时间】:2012-07-25 03:50:09
【问题描述】:
我有一个 3 级模型结构:
Model_Race has_many Model_Class
Model_Class has_many Model_Driver
现在,假设 Model_Class 和 Model_Driver 有一个 order_index 属性来保持它们的顺序。
有没有一种干净的方法来获得比赛并正确排序班级和车手?
【问题讨论】:
标签: fuelphp
我有一个 3 级模型结构:
Model_Race has_many Model_Class
Model_Class has_many Model_Driver
现在,假设 Model_Class 和 Model_Driver 有一个 order_index 属性来保持它们的顺序。
有没有一种干净的方法来获得比赛并正确排序班级和车手?
【问题讨论】:
标签: fuelphp
documentation 清楚地表明了这一点,我不知何故错过了它:
$race = Model_Race::find($id, array(
'related' => array(
'class' => array(
'order_by' => array('order_index' => 'asc'),
'related' => array(
'driver' => array(
'order_by' => array('order_index' => 'asc'),
)
)
)
)
)
);
(我更喜欢上述数组语法的方法)
$race = Model_Race::query()
->related('race.class')
->related('race.class.driver)
->order_by('race.class.order_index', 'asc')
->order_by('race.class.driver.order_index', 'asc')
->get();
您可以在模型中设置关系,以便默认情况下发生这种情况:
种族模型:
protected static $_has_many = [
'classes' => [
'conditions' => [
'order_by' => [
'order_index' => 'asc'
]
]
]
];
类模型:
protected static $_has_many = [
'drivers' => [
'conditions' => [
'order_by' => [
'order_index' => 'asc'
]
]
]
];
【讨论】: