php - 如何使用 Auth 模块从 Kohana 3 检索所有用户和所有角色?

标签 php mysql orm kohana kohana-3.3

我可以收到具有所有角色的所有用户的列表吗?我需要了解数据库中每个用户的所有角色。我在 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/

相关文章:

php - 如何在 propel 中选择表连接上的特定列?

php - 检查变量是否以 'http' 开头

php - 将 PHP 变量传递给 Bootstrap 模式

java - 如何将 Java 类中的变量调用到另一个类中?

mysql - 将列数据转换为列并按其分组

java - hibernate.cfg.xml 在项目中的位置?

java - 在 Hibernate 中使用不同别名多次连接到同一关联

php - 如何删除magento2数据库中的所有产品数据? **不可能**

php - 在运行时在php中动态生成类?

php - 如何检查目录是否存在? "is_dir", "file_exists"还是两者兼而有之?