我使用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();
}
}
现在,当我运行它时,它返回一个包含行数和第一个值的数组。
答案 0 :(得分:1)
您的查询构建器中没有groupby()
,因此SQL数据库会将所有行聚合到一个行中。
尝试将分组添加到查询构建器:
->groupby('e.choice')