特定のロールに属するすべてのユーザーのリストを取得したいと思います。
クエリは次のことを知っています。
role
テーブルをクエリし、その結果をuser_roles
テーブル、drupalには組み込みのメソッドがあるのではないかと感じました。これにより、検索を逃した可能性のある望ましい結果を得ることができます。
this の投稿ではなく、ロールを使用してユーザー権限に関連するものをチェックすることは理想的ではなく、ユーザー権限をチェックすることは理想的ではないことを認識しています。
上記のクエリに対して明確な回答を得ることができればすばらしいと思います。
user_roles()
関数を使用して、システム内のロールのリストを取得できます。たとえば、特定の権限を含むロールのみを取得する場合など、特定の条件を渡すこともできます。
役割別にユーザーのリストを取得する限り、残念ながらそのような機能はありません。小さなヘルパー関数を自分で書く必要があります。私は通常、次のようなものを使用します。
_function users_by_role($role_id) {
$sql = 'SELECT uid FROM {users_roles} WHERE rid = %d';
$q = db_query($sql, $role_id);
$uids = array();
while ($row = db_fetch_array($q)) {
$uids[] = $row['uid'];
}
return $uids;
}
_
これにより、特定のロールのユーザーIDが提供されます。その後、user_load()
を使用してそれぞれのユーザーオブジェクトを取得するか、単純に上記のクエリに結合を追加して、必要なデータを直接含めることができます。
ser_roles() はロールの配列を返します。特定のロールのすべてのユーザーを返す関数はありません。
Views を使用してユーザーのリストをクエリし、ロールでフィルターできます。
または、ビューで_User: Roles
_の引数を指定できます。次に、カスタムモジュールで user_roles()
を使用して、すべてのロールのリストを取得します。 roles配列をループし、ループ内で views_embed_view('my_users_view', 'display_id', $roleid)
を使用して、この関数に3番目の引数としてロールIDを渡します。