如何在Yii2和Db Manager中获取特定角色的用户?

时间:2014-08-11 16:14:09

标签: php yii yii2 rbac

如何在RBAC中的Yii2和DbManager中获得specefic角色的用户?

请介绍一些用于用户管理和角色管理的API。

我搜索并阅读了Yii2 guide,但我找不到任何解决方案。

3 个答案:

答案 0 :(得分:5)

我编写了这个可以添加到User类的函数。

 /**
 * Finds all users by assignment role
 *
 * @param  \yii\rbac\Role $role
 * @return static|null
 */
public static function findByRole($role)
{
    return static::find()
        ->join('LEFT JOIN','auth_assignment','auth_assignment.user_id = id')
        ->where(['auth_assignment.item_name' => $role->name])
        ->all();
}

答案 1 :(得分:5)

自Yii版本2.0.7起,它实现的DbManagerManagerInterface具有getUserIdsByRole($roleName),无需自定义代码即可执行您想要的操作。

答案 2 :(得分:4)

我使用了@Manquer指南并编写了这个函数:

public static function getRoleUsers($role_name)
    {
        $connection = \Yii::$app->db;
        $connection->open();

        $command = $connection->createCommand(
            "SELECT * FROM auth_assignment INNER JOIN user ON auth_assignment.user_id = user.id " .
            "WHERE auth_assignment.item_name = '" . $role_name . "';");

        $users = $command->queryAll();
        $connection->close();

        return $users;
    }

对某人有用。