我正在使用联接查询来提取用户数据以及关联表中的角色数据。查询正在提取数据,但我无法弄清楚如何从连接中提取特定元素。
来自回购的查询:
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 ]}
答案 0 :(得分:1)
您需要在树枝模板中使用loop来迭代各个角色,如下所示:
{% for role in user.roles %}
{{ role.name }}
{% endfor %}