Доктрина возвращает мне 49 вместо 7 !!это результат х результат!это нормально ,? - PullRequest
0 голосов
/ 07 декабря 2018
$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 голосов
/ 21 декабря 2018

Чтобы решить эту проблему:

1) Удалить

->from(Eleve::class, 'eleve')

в этом нет необходимости, так как вы создаете построитель запросов из репозитория Eleve $eleveRepository->createQueryBuilder('n')

2)Измените выбор на:

$queryBuilder->select('COUNT(n.nom)')

Почему это происходит:

Вызов из () создает декартово произведение между всеми сущностями Eleve:

Таким образом, вы получите результат 7 комбинаций Eleve x 7 Eleve.Вы можете увидеть SQL-запрос, выполнив:

$sql = $queryBuilder->getQuery()->getSQL();

, и он будет похож на:

SELECT COUNT(a0_.nom) AS sclr_0 FROM eleve a1_, eleve a0_

Это эквивалентно объединению из одиннадцати таблиц ссам по себе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...