Ни один из предложенных вопросов не применим для этого случая, потому что у меня нет никакого foreach в моем коде, но код ошибки продолжает говорить, что..
Мои действия:
public function doctrinoAction()
{
$id=1;
$em = $this->getDoctrine()->getManager();
$dql = 'SELECT p FROM TPMainBundle:Works p WHERE p.id = :id';
$consulta = $em->createQuery($dql)->setParameters('id', $id);
$productos = $consulta->getResult();
return $this->render('TPMainBundle:Default:indra.html.php', array(
'productos' => $productos,
));
}
И мой взгляд просто:
<?php
echo 'lio';
NO foreach. Я мог бы написать что-нибудь в представлении, и код ошибки будет таким же. Я мог бы отправить рендер в любое представление, чтобы оно не дошло до него, код ошибки:
ContextErrorException: Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\TP\vendor\doctrine\orm\lib\Doctrine\ORM\Query.php line 303
И я работаю в dev и очищаю кеш. Что происходит?
Единственный существующий цикл foreach - это тот, который находится в этом файле Query.php, но не создан мной.
Строка 303 запроса.php:
foreach ($this->parameters as $parameter) {
$key = $parameter->getName();
$value = $parameter->getValue();
Пожалуйста помоги
Попробуйте изменить
$consulta = $em->createQuery($dql)->setParameters('id', $id);
К этому:
$consulta = $em->createQuery($dql)->setParameter('id', $id);
Или к этому:
$params = array('id' => $id);
$consulta = $em->createQuery($dql)->setParameters($params);
\Doctrine\ORM\QueryBuilder
. setParameter()
и setParameters()
вы увидите, что последний имеет цикл foreach и ожидает какую-то коллекцию (я предполагаю ArrayCollection
или массив).