Doctrine 1.2:如何在查询中获取相关表行的计数?

时间:2013-05-28 00:18:10

标签: count inner-join doctrine-1.2

我有一个用户表,以及一个名为UserWorkplaces的相关表,其中一个用户可以在UserWorkplaces表上拥有任意数量的相关行。

我尝试构建查询以查找UserWorkplaces中只有一个相关行的所有用户。我应该使用什么样的查询来获得这个?

这是我迄今为止所尝试过的内容,但它给了我每个人工作场所以及只有一个用户的数量:

$query = Doctrine_Query::create()
    ->from('Users', 'u')
    ->innerJoin('u.userWorkplaces uw')
    ->having('COUNT(uw.id) = 1');

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参数。