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

时间:2013-08-06 14:36:06

标签: php drupal-7 roles user-roles

我正在Drupal 7中创建一个模块,需要从某个角色获取用户列表。我已经看到了如何获取登录用户角色的示例以及角色列表,但我还没有看到任何可以帮助我获取某个角色的用户列表的内容。有没有办法做到这一点?我试图使用user_role,但这只给了我一个存在的角色列表。还有其他我应该做的吗?

1 个答案:

答案 0 :(得分:2)

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环境中运行它。