我有一个用户表,以及一个名为UserWorkplaces的相关表,其中一个用户可以在UserWorkplaces表上拥有任意数量的相关行。
我尝试构建查询以查找UserWorkplaces中只有一个相关行的所有用户。我应该使用什么样的查询来获得这个?
这是我迄今为止所尝试过的内容,但它给了我每个人工作场所以及只有一个用户的数量:
$query = Doctrine_Query::create()
->from('Users', 'u')
->innerJoin('u.userWorkplaces uw')
->having('COUNT(uw.id) = 1');
答案 0 :(得分:1)
我相信你的问题不是Doctrine,而是你想要实现的SQL。
让故事简短,下面的代码可以帮到你。
$query = Doctrine_Query::create()
->from('Users u')
->innerJoin('u.userWorkplaces uw')
->having('COUNT(uw.id) = ?', 1)
->groupBy('u.id');
COUNT()是聚合函数,因此您需要为要列出的主表指定GROUP BY参数。