Как перебрать объект результата Symfony (Doctrine)

0

У меня есть следующий запрос:

function indexAction()
{
    $u = $this->getDoctrine()->getRepository("AppBundle:Users")->findAll( \Doctrine\ORM\AbstractQuery::HYDRATE_ARRAY );

    return $this->render("default/test.html.twig", ["users" => $u]);
}

И я прокручиваю его в Twig Template с помощью этого цикла:

{%  for item in users %}
<li>{{ item.email }} : </li>
{%  endfor %}

И я столкнулся с этой ошибкой:

Impossible to access a key "name" on an object of class "AppBundle\Entity\Users" that does not implement ArrayAccess interface in default/test.html.twig at line
  • 1
    Вы также пробовали {{item.property}}? Поскольку, как это выглядит, вы пытаетесь отразить объект
  • 0
    Да. Я обновил код вопроса. На самом деле я просто ошибся при вставке кодов здесь ..
Показать ещё 1 комментарий
Теги:
arrays
doctrine2

2 ответа

1

Что-то не так. Вы передаете переменную users шаблон, но вы используете myItems в цикле for.

Попробуй это:

{% for item in users %}
    {{ dump(item) }}<br />
{% endfor %}
  • 0
    Я обновил вопрос. Я вставил неправильный код. Извините моя ошибка.
  • 0
    Все еще думайте, что есть несоответствие между вашим отправленным кодом и вашим сообщением об ошибке. Сообщение об ошибке указывает на то, что вы пытаетесь получить доступ к свойству с именем «name» (не «email»), как показывает ваш код веточки. Убедитесь, что у вас определены методы доступа (getName (), getEmail () и т. Д.). Как уже упоминалось в комментариях, findAll не принимает аргументов, поэтому этот материал HYDRATE_ARRAY ничего не делает.
0

Ваш класс реализует ArrayAccess в определении вашей сущности?

class Foo implements ArrayAccess

Для этого вам нужно будет добавить несколько методов в свой класс:

Для реализации ArrayAccess вам необходимо реализовать четыре метода: offsetExists, offsetGet, offsetSet и offsetUnset. ArrayAccess :: offsetExists должны возвращать логическое значение, offsetGet может возвращать любой допустимый тип PHP, а offsetSet и offsetUnset не должны возвращать какое-либо значение. После реализации этих методов вы можете обрабатывать объект, как если бы он был массивом для сохранения и извлечения свойств

Подробнее здесь.

Ещё вопросы

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