我可以收到具有所有角色的所有用户的列表吗?我需要了解数据库中每个用户的所有角色。我在 Kohana 3.3 中使用 Auth 模块和 ORM。
最佳答案
是的,你可以。但我不明白你为什么要做这样的事情。
<强>1。完整的 ORM:
$users = ORM::factory('Auth_User')->find_all();
foreach($users as $user) {
$roles = $user->roles->find_all();
foreach($roles as $role)
$role->name;
}
<强>2。通用 SQL(提示):
SELECT * FROM users
INNER JOIN user_roles USING(user_id)
INNER JOIN roles USING(role_id)
ORDER BY users.name
结果:
- 用户_1 角色_1
- 用户_1 角色_2
- user_2 role_x
<强>3。轻松显示 SQL(但每次添加新角色时都需要更改代码)
SELECT 用户。*, IF(r1.user_id IS NULL, 0, 1) AS 角色1,
IF(r2.user_id IS NULL, 0, 1) AS 角色2,
IF(rn.user_id IS NULL, 0, 1) AS 角色
来自用户
LEFT JOIN(从 user_roles 中选择 user_id,其中 role_id = 1)AS r1 USING(user_id)
LEFT JOIN(从 user_roles 中选择 user_id,其中 role_id = 2)AS r2 USING(user_id)
LEFT JOIN (SELECT user_id FROM user_roles where role_id = n) AS rn USING(user_id)
结果:
用户名 |角色1 |角色2 |罗伦
用户1 | 1 | 0 | 0
用户2 | 0 | 1 | 1
关于php - 如何使用 Auth 模块从 Kohana 3 检索所有用户和所有角色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42503878/