我有一个实体Shop和Shop有很多InstagramShopPicture,关系如下:
/**
* @Exclude()
* @ORM\OneToMany(targetEntity="InstagramShopPicture", mappedBy="shop", cascade={"persist"})
* @ORM\OrderBy({"created" = "DESC"})
*/
protected $userPictures;
我有以下查询,我需要找到有4张或更多图片的商店:
$query = $em->createQueryBuilder()->select('s')
->from("AppMainBundle:InstagramShop", 's')
->innerJoin('s.userPictures', 'p')
;
$query->andHaving('COUNT(s.userPictures) >= 4');
为什么这不起作用?什么是正确的方法?
答案 0 :(得分:1)
Doctrine使用SQL,因此您需要使用GROUP BY
和HAVING
进行SQL操作。
此外,您需要为COUNT
指定一个字段,例如p.id
,而不是别名。
链接说明HAVING
:http://www.techonthenet.com/sql/having.php