2017-05-29 164 views
0

我正在使用Doctrine的QueryBuilder来构建一个查询,并且我希望得到表中每个值的值以及值。left join queryBuilder symfony3

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

你能张贴你的实体模型? – ste

回答

1

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

尝试添加分组到您的查询生成器:

->groupby('e.choice')