Laravel如何通过角色从api端点动态获取用户

时间:2019-08-16 08:48:31

标签: php laravel api

如何根据用户在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等,等等。

我该如何实现?

2 个答案:

答案 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';
}