Symfony необъяснимая ошибка foreach, не имея foreach

1

Ни один из предложенных вопросов не применим для этого случая, потому что у меня нет никакого 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();

Пожалуйста помоги

  • 1
    Тот же вопрос: stackoverflow.com/q/32020390/3933332
  • 0
    Чувак, я удалил его, потому что у меня проблемы с его обновлением. Я думал, что было бы лучше создать этот, с точной информацией
Показать ещё 1 комментарий
Теги:
foreach

1 ответ

2
Лучший ответ

Попробуйте изменить

$consulta = $em->createQuery($dql)->setParameters('id', $id);

К этому:

$consulta = $em->createQuery($dql)->setParameter('id', $id);

Или к этому:

$params = array('id' => $id);
$consulta = $em->createQuery($dql)->setParameters($params);
  • 0
    Ты бог? Это сработало .. я имею в виду третий вариант (1 и 2 одинаковы). Можете ли вы дать мне какое-то объяснение, чтобы я мог понять проблему позади? Благослови тебя, моя задница болит от того, чтобы сидеть, пытаясь заставить эту работу
  • 1
    Оба являются методами \Doctrine\ORM\QueryBuilder . setParameter() и setParameters() вы увидите, что последний имеет цикл foreach и ожидает какую-то коллекцию (я предполагаю ArrayCollection или массив).
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню