왜 이걸 알아낼 수 없습니까? 기본적으로, 나는 many-to-many 관계를 가진 두 개의 테이블을 가지고있어서 그 사이에 접합 테이블을 가지고있다. Zend_db 접합 테이블에 쿼리를 결합하십시오.
Restaurant (id, restaurant_name, suburb)
RestaurantCuisine (restaurant_id, cuisine_id)
Cuisine (id, cuisine_name)
그래서, 많은 레스토랑이 많은 요리를 할 수 있습니다 : 예를 들어
다음 데이터베이스 스키마를 고려하십시오.
내가 작성하려고하는 쿼리는 교외에있는 모든 요리를 반환합니다. SQL 예제는 다음과 같습니다 :
SELECT cuisine_name
FROM CuisineRestaurant
JOIN Cuisine ON Cuisine.id = CuisineRestaurant.cuisine_id
JOIN Restaurant ON Restaurant.id = CuisineRestaurant.restaurant_id
WHERE suburb LIKE '%x%';
이것은 나에게 맞는 것 같습니다.
어떻게 이것을 Zend_Db를 사용하여 구현합니까?
$select = Zend_Db_Table::getDefaultAdapter()->select();
$select->from('RestaurantCuisine', 'cuisine_name')
->join('Cuisine', 'Cuisine.id = RestaurantCuisine.cuisine_id', array())
->join('Restaurant', 'Restaurant.id = RestaurantCuisine.restaurant_id', array())
->where('suburb LIKE ?', '%x%');
결과 :
지금까지 어떤 시도를 했습니까? – Gordon
안녕하세요 고든, 많은 시행 착오 끝에 나는 이것을 생각해 냈습니다. 올바른 데이터를 반환하지만 매우 느리게 실행되는 것으로 보입니다. $ select = $ this-> select() -> setIntegrityCheck (false) -> distinct() -> from ('CuisineRestaurant', array()) -> join ('Restaurant', 'Restaurant.id = CuisineRestaurant.restaurant_id',> 'join'('Cuisine', 'CuisineRestaurant.cuisine_id', 배열 ('id', 'cuisine' array()) -> 여기서 ('Restaurant.suburb =?', $ 시외) -> 주문 ('Cuisine.cuisine'); –