2012-09-13 2 views
1

페이지 엔티티와 One2Many 관계가있는 책 엔티티가 있습니다. 적어도 하나의 페이지가있는 모든 책을 검색하는 쿼리를 만들고 싶었습니다. 나는 그랬다 :일부 요소가있는 엔티티 얻기

페이지가있는 책이 많지만이 쿼리는 단 하나의 책만 반환한다는 문제가있다. 생성

쿼리는 다음과 같습니다 나에게 잘 보이는

SELECT b FROM Acme\DemoBundle\Entity\Book b LEFT JOIN b.pages p HAVING COUNT(p) > 0 

. 어떤 생각이 잘못되었을 수 있습니까?

답변

2

당신이 집계 함수가 필요하지 않습니다

->innerJoin('b.pages','p') 

대신

->leftJoin('b.pages','p') 

의 사용 간단합니다. 간단히 말해서,이 innerjoin은 하나 이상의 페이지와 조인 할 수있는 Books 만 반환합니다.

+0

당신이 옳았고 솔루션이 더 낫습니다. 감사! –

1

집계 함수를 사용하는 경우 groupBy을 추가해야합니다. 예 :

$qb = $this->getDoctrine() 
    ->getRepository('AcmeDemoBundle:Book') 
    ->createQueryBuilder('b');   
    ->leftJoin('b.pages','p') 
    ->groupBy('b.id') 
    ->having($qb->expr()->gt($qb->expr()->count('p'), 0)); 
+0

감사합니다. 잊어 버렸습니다. 완벽하게 작동합니다. –

관련 문제