私は3レベルのモデル構造を持っています:
Model_Race has_many Model_Class
Model_Class has_many Model_Driver
ここで、Model_Class と Model_Driver に順序を保つための order_index プロパティがあるとします。
レースを取得し、クラスとドライバーを正しくソートするクリーンな方法はありますか?
私は3レベルのモデル構造を持っています:
Model_Race has_many Model_Class
Model_Class has_many Model_Driver
ここで、Model_Class と Model_Driver に順序を保つための order_index プロパティがあるとします。
レースを取得し、クラスとドライバーを正しくソートするクリーンな方法はありますか?
ドキュメントはこれを明確に示しています、私はどういうわけかそれを見逃しました:
$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'
]
]
]
];