left join queryBuilder symfony3

时间:2017-05-29 11:56:25

标签: symfony doctrine-orm left-join query-builder

我使用Doctrine的QueryBuilder来构建查询,我希望得到表中每个值的计数以及值。

这是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 ;

它返回一个包含两列的表,值(选项)和计数

这是查询构建器:

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

现在,当我运行它时,它返回一个包含行数和第一个值的数组。

1 个答案:

答案 0 :(得分:1)

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

尝试将分组添加到查询构建器:

->groupby('e.choice')