我通过3个表(“用户”,“客户端”,“帐户”)获取关联对象。 “用户”与“客户”具有一对多的关系,“客户”与“帐户”具有一对多的关系。我使用以下代码获取一个特定“用户”的所有“帐户”:
$qb = $this->getDoctrine()->getManager()->createQueryBuilder()
->select('u, c, a')
->from('AcmeUserBundle:User', 'u')
->leftJoin('u.clients', 'c')
->leftJoin('c.accounts', 'a')
->where('u.id = :id');
$user = $qb->getQuery()
->setParameter('id', $id)
->getOneOrNullResult();
我将$ user数组传递给TWIG模板但我找不到正确的循环来检索“$ user”数组中包含的所有帐户。实现这一目标的最佳方法是什么?在控制器中应该做什么与在TWIG中应该做什么?你能给我一个有用的代码示例吗?我查看了这个答案,但没有设法应用给定的指导How to get values from a multidimensional array in Twig?
答案 0 :(得分:0)
$user
数组不是一个单独的对象,这可能是你无法循环它的原因。您可以尝试改为
$users = $qb->getQuery()
->getlResults();
$twig->render('template.twig', array('users' => $users));
并在template.twig
中{% for user in users %}
{{ dump(user) }}
{% endfor %}
有关转储的更多信息:http://twig.sensiolabs.org/doc/functions/dump.html
然后可能:
{% for user in users %}
<h1>User: {{ user.id }}</h1>
list clients:<br/>
{% for client in user.clients %}
<div>
<h2>Client: {{ client.id }}</h2>
{{ dump(client) }}
List accounts:<br/>
{% for account in user.accounts %}
<div>
<h3>Account: {{ account.id }}</h3>
{{ dump(account) }}
</div>
{% endfor %}
</div>
{% endfor %}
{% endfor %}