如何使用 Auth 模块从 Kohana 3 中检索所有用户和所有角色?
Posted
技术标签:
【中文标题】如何使用 Auth 模块从 Kohana 3 中检索所有用户和所有角色?【英文标题】:How to retrieve all users and all roles from Kohana 3 using Auth module? 【发布时间】:2017-02-28 08:41:38 【问题描述】:我可以接收所有角色的所有用户的列表吗?我需要知道我的数据库中每个用户的所有角色。我正在使用带有 ORM 的 Kohana 3.3 中的 Auth 模块。
【问题讨论】:
【参考方案1】:是的,你可以。但我不明白你为什么要做这样一件次优的事情。
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
结果:
user_1 角色_1 user_1 角色_2 user_2 角色_x3.轻松显示 SQL(但每次添加新角色时都要更改代码)
SELECT users.*, IF(r1.user_id IS NULL, 0, 1) AS role1,
IF(r2.user_id IS NULL, 0, 1) AS role2,
IF(rn.user_id IS NULL, 0, 1) AS rolen
FROM users
LEFT JOIN (SELECT user_id FROM user_roles where role_id = 1) AS r1 USING(user_id)
LEFT JOIN (SELECT user_id FROM user_roles where 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)
结果:
username | role1 | role2 | rolen
user1 | 1 | 0 | 0
user2 | 0 | 1 | 1
【讨论】:
以上是关于如何使用 Auth 模块从 Kohana 3 中检索所有用户和所有角色?的主要内容,如果未能解决你的问题,请参考以下文章
Kohana3 - ErrorException [注意]:未定义索引:id - 调用 Auth::instance() 时出错
使用 Kohana 3,如何从 Database 类中获取最后一个插入 ID?
Kohana 3.2 - ORM 的 pk() 方法在 save() (create()) 之后返回 false - 为啥?