PageエンティティとOne2Manyの関係にあるBookエンティティがあります。少なくとも1ページあるすべての本を取得するクエリを作成したかったのです。やった:
$qb = $this->getDoctrine()
->getRepository('AcmeDemoBundle:Book')
->createQueryBuilder('b');
->leftJoin('b.pages','p')
->having($qb->expr()->gt($qb->expr()->count('p'), 0));
$books = $qb
->getQuery()
->getResult();
問題は、ページを持っている本はたくさんありますが、このクエリは1冊の本しか返さないということです。
作成されるクエリは次のとおりです。
SELECT b FROM Acme\DemoBundle\Entity\Book b LEFT JOIN b.pages p HAVING COUNT(p) > 0
それは私にはうまく見えます。何が間違っているのか考えてみませんか?