2015-06-09 2 views
1

Я использую Laravel Entrust пакет https://github.com/Zizaco/entrust Я хочу, чтобы все пользователи со своими ролями, как этотКак получить всех пользователей с ролями, где role = 'admin', используя красноречие вместе с Entrust?

name | role 

Ryan | admin 
Megan | admin 

структуры Таблица

users 
id,name,email,password 

roles, 
id,name 

role_user (pivot table) 
id,user_id 

Я попытался это, но не работает

$users = User::with('roles')->where('roles.name','=','admin')->get(); 

Ошибка

Column not found: 1054 Unknown column 'roles.name' in 'where clause' (SQL: select * from users where roles.name = admin) 

Я не хочу использовать ни RAW, ни запросов этого

$users = DB::table('users')->select('users.name as username', 'role.name as role')->with('roles')->join('roles', 'roles.user_id', '=', 'users.id')->where('roles.name', 'admin')->get(); 

Есть ли другой способ?

ответ

5

Использование whereHas

$users = User::whereHas('roles', function($q) 
{ 
    $q->where('name', 'admin'); 
})->get(); 
1

Используйте это, он будет получать все пользователю роли администратора

$users = User::with(['roles' => function($query) 
{ 
    $query->where('name','=','admin'); 
}])->get(); 
Смежные вопросы