Symfony 3 - идентификатор идентификатора отсутствует для запроса AppBundle \ Entity \ User

Я новичок в разработке.

Я хочу использовать этот скрипт: https://github.com/sebtouze/LoupGarou. Я хорошо выполнил шаги, но получаю сообщение об ошибке:

Doctrine\ORM\ORMException: The identifier id is missing for a query of AppBundle\Entity\User at n/a in C:\UwAmp\www\vendor\doctrine\orm\lib\Doctrine\ORM\ORMException.php line 294

at Doctrine\ORM\ORMException::missingIdentifierField('AppBundle\Entity\User', 'id') in C:\UwAmp\www\vendor\doctrine\orm\lib\Doctrine\ORM\EntityManager.php line 403

at Doctrine\ORM\EntityManager->find('AppBundle\Entity\User', array('id' => null), null, null) in C:\UwAmp\www\vendor\doctrine\orm\lib\Doctrine\ORM\EntityRepository.php line 154

at Doctrine\ORM\EntityRepository->find(null) in C:\UwAmp\www\src\AppBundle\Controller\DefaultController.php line 189

at AppBundle\Controller\DefaultController->indexAction('public') in C:\UwAmp\www\vendor\symfony\symfony\src\Symfony\Component\HttpKernel\HttpKernel.php line 135

at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), '1') in C:\UwAmp\www\vendor\symfony\symfony\src\Symfony\Component\HttpKernel\HttpKernel.php line 57

at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), '1', true) in C:\UwAmp\www\vendor\symfony\symfony\src\Symfony\Component\HttpKernel\DependencyInjection\ContainerAwareHttpKernel.php line 67

at Symfony\Component\HttpKernel\DependencyInjection\ContainerAwareHttpKernel->handle(object(Request), '1', true) in C:\UwAmp\www\vendor\symfony\symfony\src\Symfony\Component\HttpKernel\Kernel.php line 183

at Symfony\Component\HttpKernel\Kernel->handle(object(Request)) in C:\UwAmp\www\web\app.php line 28

Ошибка в картинке

Не могли бы вы мне помочь ?

Заранее спасибо.

Вы должны проверить содержимое ваших переменных. Здесь переменная, которая должна содержать идентификатор, фактически равна нулю.

Lapixel 15.03.2018 10:03
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
0
1
3 912
4

Ответы 4

У тебя есть ответ в твоем посте

DefaultController.php line 189 вы передали нулевую переменную. Проверьте переменные, которые там передаются, особенно id. Я не могу сказать больше, потому что я не вижу отправленного вами кода, только ошибка.

Не понимаю, откуда взялась проблема, вот файл DefaultController.php: pastebin.com/48G0uFEX Спасибо!

Aralwen 13.03.2018 16:59

Как уже упоминалось, ваша ошибка здесь (строка 189 DefaultController.php):

foreach($arraySynthesisMayorVotes as $vote)
{
    $vote = $userRepository->find($vote['id']);
}

Вы проходите цикл foreach и снова и снова перезаписываете $ vote. Это также та же переменная, в которую вы передаете свой foreach.

Я думаю, что виноват этот блок кода. Я не мог понять этот блок кода. Я думаю тебе нужно поменять или убрать

$userRepository = $em->getRepository('AppBundle:User');
foreach($arraySynthesisMayorVotes as $vote)
{
        $vote = $userRepository->find($vote['id']);
}
foreach($arraySynthesisVillageVotes as $vote)
{
        $vote = $userRepository->find($vote['id']);
}

Если вы хотите подсчитать общее количество голосов, вы можете использовать count($arraySynthesisVillageVotes). Но это зависит от вашей бизнес-логики

Сущность не является массивом и не может быть запрошена как таковая. Это объект.

В строке (строк) 189 (и 193) вместо:

$vote = $userRepository->find($vote['id']);

пытаться:

$vote = $userRepository->find($vote->getId());

Другие вопросы по теме