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