$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
要解决此问题:
1( 删除
->from(Eleve::class, 'eleve')
这是不需要的,因为您从Eleve存储库$eleveRepository->createQueryBuilder('n')
创建查询生成器
2( 将选择更改为:
$queryBuilder->select('COUNT(n.nom)')
为什么会发生这种情况:
调用from((在所有Eleve实体之间创建笛卡尔乘积:
所以你得到了一个7 Eleve x 7 Eleve组合的结果。您可以通过执行以下操作来查看sql查询:
$sql = $queryBuilder->getQuery()->getSQL();
它将类似于:
SELECT COUNT(a0_.nom) AS sclr_0 FROM eleve a1_, eleve a0_
这相当于eleve表与其自身的联接。