$queryBuilder = $eleveRepository->createQueryBuilder('n');
$queryBuilder->select('COUNT(eleve.nom)')
->from(Eleve::class, 'eleve') ;
$totalEleves = $queryBuilder->getQuery()->getSingleScalarResult();
return $this->render('security/eleve.html.twig' , [
'formulaire'=> $form->createView(),
'eleves' => $eleveRepository->findAll() ,
'totalEleves' => $totalEleves
]) ;
我只有7条记录,但是学说使我回到了49
答案 0 :(得分:0)
要解决此问题:
1)删除
->from(Eleve::class, 'eleve')
这是不需要的,因为您是从Eleve存储库$eleveRepository->createQueryBuilder('n')
2)将选择更改为:
$queryBuilder->select('COUNT(n.nom)')
为什么会这样:
调用from()会在所有Eleve实体之间创建一个Cartesian product:
因此,您得到7个Eleve x 7个Eleve组合的结果。 您可以通过以下方式查看sql查询:
$sql = $queryBuilder->getQuery()->getSQL();
,它将类似于:
SELECT COUNT(a0_.nom) AS sclr_0 FROM eleve a1_, eleve a0_
这等效于一个{eve {3}}表本身。