左连接 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')
我正在使用 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')