【问题标题】:How to retrieve all users and all roles from Kohana 3 using Auth module?如何使用 Auth 模块从 Kohana 3 中检索所有用户和所有角色?
【发布时间】:2017-02-28 08:41:38
【问题描述】:

我可以接收所有角色的所有用户的列表吗?我需要知道我的数据库中每个用户的所有角色。我正在使用带有 ORM 的 Kohana 3.3 中的 Auth 模块。

【问题讨论】:

    标签: php mysql orm kohana kohana-3.3


    【解决方案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 角色_x

    3.轻松显示 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-20
      • 1970-01-01
      • 2018-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-07
      • 1970-01-01
      相关资源
      最近更新 更多