2011-10-18 3 views
1

충분한 침대가있는 호텔에서 데이터베이스를 가져 오려고합니다 (사용자가 게스트 수 매개 변수를 지정 함). 쿼리는 다음과 같아야합니다.Doctrine2 SUM이있는 QueryBuilder 하위 쿼리?

위의 쿼리에는 where 절에 하위 쿼리가 포함되어 있습니다. doctrine의 QueryBuilder 문서를 읽었으며 QB에서 하위 쿼리를 작성하는 방법을 모르겠습니다.

내가 지금 가지고있는 모든은 다음과 같습니다

$qb = $this->getDoctrine()->getEntityManager()->createQueryBuilder() 
    ->select('h') 
    ->from('AAAHotelsBundle:Hotel', 'h') 
    ->where(.........???...........); 

어떤 아이디어가 다음에 무엇을?

물론 나는 문제를 단순화했다. (쿼리 자체는 훨씬 더 복잡하다.) Symfony2를 사용합니다.

답변

0

나는이 DQL이

SELECT h, SUM(r.guestCount * r.count) as TSUM FROM Hotel h JOIN h.room r 
WHERE TSUM >= :questCount 
2

DQL 내 경우에 해결책이 아니다 당신에게 도움이 될 것입니다 생각합니다. 나는 정말로 QueryBuilder를 사용할 필요가있다. 나는 했습니다. 해결책은 다음과 같습니다.

$qb = $this->getDoctrine()->getEntityManager()->createQueryBuilder() 
    ->select('h') 
    ->from('AAAHotelsBundle:Hotel', 'h') 
    ->join('Room', 'r') 
    ->groupBy('h') 
    ->having('SUM(r.guestCount * r.count) >= :guestCount') 
    ->setParameter("guestCount", $guestCount);