左连接 queryBuilder symfony3

left join queryBuilder symfony3

我正在使用 Doctrine 的 QueryBuilder 构建查询,我想获取 table 中每个值的计数以及值。

这是 SQL 查询

SELECT choice.choice ,count(*) 
FROM answer 
LEFT JOIN choice ON answer.answer_id_id = choice.id 
WHERE choice.survey_id=1  
GROUP BY choice ;

它 returns 一个 table 有两列,值(选择)和计数

这是查询生成器:

class AnswerRepository extends \Doctrine\ORM\EntityRepository
{
    public function getSurveyAnswers($idSurvey)
    {
        $query = $this->createQueryBuilder("a");
        $query
            ->select('COUNT(a.answerId),e.choice')
            ->leftJoin("a.answerId",'e')->addSelect('e.choice')
            ->where('e.Survey = :surv')
            ->setParameter('surv',$idSurvey);

        $kk = $query->getQuery()->getArrayResult();
        dump($kk);
        die();
    }
}

现在,当我 运行 这是一个 returns 包含行数和第一个值的数组时。

您的查询构建器中没有 groupby(),因此 SQL 数据库 returns 将所有行聚合成一个。

尝试向您的查询构建器添加分组:

->groupby('e.choice')