如何获取某个角色的用户列表


How to get a list of users in a certain role?

我正在Drupal7中创建一个模块,该模块需要从某个角色获取用户列表。我看到了一些例子,展示了如何获取登录用户的角色和角色列表,但我没有看到任何东西可以帮助我获取某个角色的用户列表。有办法做到这一点吗?我试图使用user_role,但这只给了我一个现有角色的列表。我还应该用它做什么吗?

user_roles()实际上是以这样一种方式实现的,即它搜索roles数据库表以提取所有角色。您可以执行类似的操作,并在users表中搜索给定的角色。请查看下面的功能

function getUsersByRole($rid = 1) { // rid = Role Id from users_roles table
    $query = db_select('users', 'u');
    $query->fields('u', array('uid', 'name'));
    $query->innerJoin('users_roles', 'r', 'r.uid = u.uid');
    $query->condition('r.rid', $rid);
    $query->orderBy('u.name');
    $result = $query->execute();
    $users = array();
    foreach ($result as $user) {
        $users[] = $user;
    }
    return $users;
}
$users = getUsersByRole(3);
var_dump($users);

确保您将在Drupal环境中运行它。