教义回到我49而不是7!结果x resultat!这是正常的 ,?

时间:2018-12-07 14:25:50

标签: 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 个答案:

答案 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}}表本身。