doctrine-orm - 使用 DQL 仅选择具有给定关联对象计数的实体

标签 doctrine-orm doctrine dql

如何筛选具有给定附加关联对象计数的 DQL 实体?

例如:

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

其中 u.moods 是用户的一对多关系?

最佳答案

您可以使用此查询生成器配置。

$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();

关于doctrine-orm - 使用 DQL 仅选择具有给定关联对象计数的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19523851/

相关文章:

php - Doctrine 2.1 和表 utf-8 编码

mysql - 学说 - 数据库表示

php - 在 symfony 中更新数据库架构时发生异常

php - symfony 2.8.8 如何检查框架连接到mysql(mariadb)

mysql - DQL 更新多个表

sql - Documentum 查询语言内部联接

symfony - 具有多个连接表的 Doctrine DQL

php - 更新多对多关联原则2

php - Doctrine 中的一对一关系仅更新一个字段 - 违反完整性约束 : 1062 Duplicate entry

mysql - 如何计算类别中的产品