0

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

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

到目前为止,这是我尝试过的,但它给了我每个人的工作场所的数量,并且只有一个用户:

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

1 回答 1

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

于 2013-06-06T08:11:42.683 回答