次のテーブルがあります。
- restaurants (restaurant.id, restaurant.name)
- menus (menu.id, menu.name, menu.active, menu.restaurant_id)
アクティブなメニュー (menu.active = true) を持つすべてのレストランのリストが必要です。
- restaurant2
- menu1
- menu4
- restaurant5
-menu3
- restaurant19
- menu34
- menu33
私の最初のアイデアは次のようなものでした:
$options['contain'] = array(
'Menu' => array(
'conditions' => $menuParams //array('Menu.active' => '1') //$menuParams
)
);
すべてのレストランがリストされるため、これは機能しません。アクティブなメニューがあるレストランだけを持ちたいです。
次のアイデア: join の使用
$options['joins'] = array(
array('table' => 'menus',
'alias' => 'Menu',
'type' => 'RIGHT',
'conditions' => array(
'Menu.restaurant_id = Restaurant.id',
)
)
);
必要な順序付きリストがないため、良くありません。レストランごとにグループ化されたメニューが必要です。上を見てください。
レストランとメニュー (active = true) を結合してから、contain を使用して順序付きリストを取得するのは正しい方法ですか? それはうまくいくと思いますが、もっと簡単な方法もあると思いますよね?
どんな助けでも大歓迎です!ありがとうございました。