从symfony2中的连接DQL查询中提取数组元素

时间:2014-11-10 17:18:10

标签: php symfony twig

我正在使用联接查询来提取用户数据以及关联表中的角色数据。查询正在提取数据,但我无法弄清楚如何从连接中提取特定元素。

来自回购的

查询:

public function loadAllUsers()
{
    $q = $this
        ->createQueryBuilder('u')
        ->select('u', 'r')
        ->leftJoin('u.roles', 'r')
        ->addOrderBy('u.username', 'ASC');

    return $q->getQuery()->getResult();
}

我的树枝模板部分:

            {% for user in users %}
                <tr>
                    <td>{{ user.id }}</td>
                    <td>{{ user.username }}</td>
                    <td>{{ user.firstname }}</td>
                    <td>{{ user.lastname }}</td>
                    <td>{{ user.email }}</td>
                    <td>{{ user.lastLogged.date }}</td>
                    <td>{{ user.roles.name }}</td> <!-- insert role name in here -->
                    <td>{{ user.isactive }}</td>
                </tr>
            {% endfor %}

从发送到模板的用户对象的twig dump 输出

users {#264 ▼
  -id: 1
  -username: "admin"
  -password: "$2y$12$9f76e741dd03a517a5207OkX/gjsP3mif2RxJIs00WyVUj4c3jYPS"
  -firstname: "Matt"
  -lastname: "HB"
  -isActive: true
  -email: "aaaa@aaaa.aaa"
  -lastLogged: DateTime {#262 ▶}
  -salt: "9f76e741dd03a517a5207b91476079c7"
  -roles: PersistentCollection {#280 ▼
    -snapshot: array:1 [ …1]
    -owner: users {#264}
    -association: array:20 [ …20]
    -em: EntityManager {#121 …10}
    -backRefFieldName: "users"
    -typeClass: ClassMetadata {#265 …}
    -isDirty: false
    -initialized: true
    -coll: ArrayCollection {#281 ▼
      -_elements: array:1 [▼
        0 => roles {#288 ▼
          -id: 6
          -name: "super_admin"
          -role: "ROLE_SUPER_ADMIN"
          -users: PersistentCollection {#289 ▶}
        }
      ]
    }
  }
}

我尝试过以下几行无济于事。我需要用户的角色名称。

{{ user.roles.name }}
{{ user.roles.coll.name ]}

1 个答案:

答案 0 :(得分:1)

您需要在树枝模板中使用loop来迭代各个角色,如下所示:

{% for role in user.roles %}
    {{ role.name }}
{% endfor %}