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