原则queryBuilder-计数OneToMany关系

时间:2019-11-02 15:00:56

标签: symfony doctrine one-to-many

我有这个查询

/**
 * @param $i
 * @return mixed
 * Returns all users except current logged in manager
 */
public function getUsersWithoutCurrent($i) {
    $qb = $this->createQueryBuilder('u');
    $qb->select('u.name')
        ->addSelect('u.email')
        ->addSelect('u.LastSeen')
        ->addSelect('u.slug')
        ->addSelect('u.roles')
        ->where($qb->expr()->notIn('u.id', ':usr'))
        ->setParameter('usr', $i);
    return $qb
        ->getQuery()
        ->getResult();
}

但是同时我想为每个用户计算与博客相关的帖子

/**
 * @ORM\OneToMany(targetEntity="App\Entity\Blog", mappedBy="author", orphanRemoval=true)
 */
private $blogs;

如果我要加入博客,然后尝试选择count()我就得到

SQLSTATE[42000]: Syntax error or access violation: 1140 In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column 'db.u0_.name'; this is incompatible with sql_mode=only_full_group_by

这是格式化的查询

SELECT u0_.name AS name_0, u0_.email AS email_1, u0_.last_seen AS last_seen_2, u0_.slug AS slug_3, u0_.roles AS roles_4, COUNT(DISTINCT (b1_.id)) AS sclr_5 FROM user u0_ INNER JOIN blog b1_ ON u0_.id = b1_.author_id WHERE u0_.id NOT IN (?)' with params [37]

1 个答案:

答案 0 :(得分:0)

我要做的就是添加一个Iterable:)

groupBy