如何根据用户在laravel
中扮演的角色来获取用户?我的角色例如“管理员”,“作者”,“编辑”,并且我希望有一个动态的api
端点。
所以在我的api.php
中,我有:
Route::get('users/{role}', "Api\UserController@role");
我的控制器看起来像这样:
public function show()
{
$user_role = User::whereHas(
'roles',
function ($q) {
$q->where('name', 'admin');
}
)->get();
return $user_role;
}
到目前为止,此方法还可以,但是我希望端点是动态的,例如,如果要让所有编辑者用户使用,端点应该是api/users/editors
等,等等。
我该如何实现?
答案 0 :(得分:1)
public function show($role) //example: $role = 'admin'
{
return User::whereHas('roles', function ($q) use ($role) {
$q->where('name', $role);
})->get();
}
答案 1 :(得分:1)
您的控制器功能应如下所示:
public function show(Role $role)
{
$users = $role->users;
return $users;
}
并且您的角色口才模型应具有以下方法:
public function users()
{
return $this->belongsToMany(User::class, 'user_role')
}
public function getRouteKeyName()
{
return 'name';
}