教义回到我身边 49 而不是 7 !!这是结果 x 结果!这很正常,?

  • 本文关键字:结果 回到我身边 doctrine
  • 更新时间 :
  • 英文 :

$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表与其自身的联接。

相关内容

最新更新