나는 다음과 같은 테이블이 있습니다CakePHP의 SQL 쿼리
- restaurant2
- menu1
- menu4
- restaurant5
-menu3
- restaurant19
- menu34
- menu33
나의 첫번째 :
- restaurants (restaurant.id, restaurant.name)
- menus (menu.id, menu.name, menu.active, menu.restaurant_id)
내가 활성 메뉴가있는 모든 레스토랑 (menu.active = TRUE)와 목록을 갖고 싶어를 아이디어는 다음과 같았습니다.
$options['contain'] = array(
'Menu' => array(
'conditions' => $menuParams //array('Menu.active' => '1') //$menuParams
)
);
모든 레스토랑이 표시되기 때문에 제대로 작동하지 않습니다. 나는 활동적인 메뉴가있는 레스토랑 만 갖고 싶습니다.
다음 생각 : 내가 원하는 정렬 된 목록이 없습니다 때문에,
$options['joins'] = array(
array('table' => 'menus',
'alias' => 'Menu',
'type' => 'RIGHT',
'conditions' => array(
'Menu.restaurant_id = Restaurant.id',
)
)
);
좋지 않아 조인을 사용. 식당 옆에있는 메뉴가 필요합니다. 위를보세요.
레스토랑 및 메뉴 (활성 = true)와 조인을 한 다음 포함을 사용하여 순서가 지정된 목록을 얻는 것이 올바른 방법입니까? 나는 그것이 작동 할 수 있다고 생각하지만 더 쉬운 방법이 있다고 생각한다. 그렇지?
도움이되었습니다. 고맙습니다.
당신이 보여준'JOIN' 쿼리에''Menu.active '=>'1''을 추가해야합니다. 그러면 활성 메뉴가있는 레스토랑의 목록을 얻을 수 있습니다. 결과? –
예, 맞습니다. 알고 있습니다. 좋아, 그룹은 잘못된 단어이다. 나는 아래의 첫 번째 목록과 같은 메뉴가있는 식당을 보여주고 싶다. , 레스토랑 1, 메뉴 1, 메뉴 2 레스토랑 2 menu49 : 레스토랑 1 레스토랑 1 메뉴 1, 레스토랑 2, menu49 레스토랑 2, menu22 내가 갖고 싶어 을 메뉴 2 : 지금 나는 다음과 같은 수 menu 22 – FishWave
당신은'Restaurant.id'에'ORDER BY' 절이 필요합니다. – didierc