如何遍历symfony(Doctrine)结果对象

时间:2015-02-23 12:39:22

标签: php arrays symfony doctrine-orm

我有以下查询:

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

2 个答案:

答案 0 :(得分:1)

出了点问题。您将users变量传递给模板,但在myItems循环中使用了for

试试这个:

{% for item in users %}
    {{ dump(item) }}<br />
{% endfor %}

答案 1 :(得分:0)

您的类是否在实体定义中实现了ArrayAccess?

class Foo implements ArrayAccess

您必须在班级中添加多个方法才能实现此目的:

要实现ArrayAccess,您需要实现四个方法:offsetExists,offsetGet,offsetSet和offsetUnset。 ArrayAccess :: offsetExists必须返回一个布尔值,offsetGet可以返回任何有效的PHP类型,而offsetSet和offsetUnset不应该返回任何值。实现这些方法后,您可以将对象视为一个数组,以便保存和检索属性

更多详情here