2013-02-01 1 views
2

나는 두 개의 개체 인 Restaurant and Cuisine을 보유하고 있으며 Restaurant에는 Funnily라고 불리는 요리와 다 대다 관계가 있습니다. 나는 두 개의 레스토랑 (rest1, rest2)와 두 개의 요리 (인도, 중국어)를 가지고있는 경우Doctrine many to many 속성을 반환 값으로 사용

그래서 두 레스토랑은 인도가

rest1 indian 
rest2 indian 

내가 쿼리 빌더를 통해하는 DQL 쿼리를 수행하고 싶습니다 , 그것은 얼마나 많은 식당이 요리에 할당되었는지에 대한 계산과 함께 요리 목록을 반환합니다. 이론적으로 이와 같은 것입니다.

$qb->select('rc AS cuisine, COUNT(r) AS restaurantCount') 
    ->from('Restaurant', 'r') 
    ->join('r.cuisines', 'rc') 
    ->addGroupBy('rc'); 

그래서, 그 결과로, 나는 주요 개체가 반환 될 필요로이 오류를 줄 것이라는 점을 알고있다

cuisine: indian restaurantCount: 2 


을하고 싶습니다.

many-to-many의 역함수를 만들고 사용하여이 작업을 수행 할 수 있음을 알고 있지만 양방향 관계의 복잡성을 피하기 위해 요리사에게 레스토랑 속성을주는 것을 피하려고합니다.

레스토랑을 기본 선택 테이블로 사용하여 원하는 결과를 얻을 수 있습니까?

답변

0

양방향 관계를 사용하지 않고 깨끗한 OOP 방식으로 가능하다고 생각하지 않습니다.
그것은 많은 의미를 가지지 않고, 당신은 선택 레스토랑이지만, 다른 것을 돌려주고 있습니다.

그러나 원시 SQL을 항상 이와 같이 사용할 수 있습니다.
IMHO 더 빠르고 더 깨끗한 솔루션이 단지 양방향 관계를 강요하는 것보다.