使用DQL仅选择已给出相关对象计数的实体

时间:2013-10-22 16:53:27

标签: doctrine-orm doctrine dql

如何在已提供附加关联对象计数的DQL实体中进行过滤?

例如:

    $qb = $this->createQueryBuilder('u');
    $qb->where('COUNT(u.moods) > 1');

u.moods对用户来说是一对多的关系吗?

1 个答案:

答案 0 :(得分:2)

您可以使用此查询构建器配置。

$qb = $this->createQueryBuilder('u');
$qb
    ->select(array('u'))
    ->from('User', 'u')
    ->innerJoin('u.moods', 'm')
    ->having(
        $qb->expr()->gt(
            $qb->expr()->count('m'), 1
        )
    );

return $qb->getQuery()->getResult();

或者如果您更喜欢DQL

$dql = "SELECT u FROM User u JOIN u.moods m HAVING COUNT(m) > 1";

$query = $this->createQuery($dql);

return $query->getResult();