到目前为止,这一天花了一整天......
我有实体房间和用户。很多用户来到一个房间。这种关系很有效。
我试图选择所有少于四个相关用户的房间。看起来它应该是DQL或QueryBuilder非常简单,但它给我带来了麻烦。无法找到任何适合搜索的内容。最常见的意外结果是a)返回没有结果b)返回可能有或没有< 4用户的单个结果。
下面是我希望它可以工作的代码。任何帮助将不胜感激,谢谢!
$rooms_with_space = $em->createQueryBuilder()
->select('c')
->from('MyBundle:Room', 'c')
->leftJoin('c.users', 'u')
->having('COUNT(u.id) > 4')
->getQuery()
->getResult();
答案 0 :(得分:1)
据我所知,HAVING的COUNT函数在有GROUP BY时有效。
我认为你需要添加一个房间ID的GROUP BY:
$rooms_with_space = $em->createQueryBuilder()
->select('c')
->from('MyBundle:Room', 'c')
->leftJoin('c.users', 'u')
->groupBy('c.id')
->having('COUNT(u.id) > 4')
->getQuery()
->getResult();
希望这可以帮到你!