如何使用委托过滤 Laravel 5 eloquent 查询

How to filter Laravel 5 eloquent query using entrust

我有一个使用委托包在 Laravel 5 制作的应用程序:

https://github.com/Zizaco/entrust/tree/laravel-5

我有一个已经运行良好的查询,它获取与搜索字符串匹配的分页用户,如下所示:

User::like($search)->skip($offset)->take($limit)->get()

通过委托,我有一个名为 admin 的角色,那么我将如何调整此查询,以便只有 returns 个具有 admin 角色的用户。这没有用:

User::like($search)->hasRole('admin)->skip($offset)->take($limit)->get()

您可以尝试这样的操作:

User::whereHas('roles', function($q) {

    $q->where('name', 'admin');

})->skip($offset)->take($limit)->get();

认为 hasRole() 不能用作查询范围,但我可能错了。我相信它适用于单用户检查,例如:

if (Auth::user()->hasRole('admin')) {

    // Logged in user has the admin role...
}

我也在我的应用程序中使用了委托 (laravel 4.2) 得到了逻辑并重写了它,因为它正确地满足了我的需要。为了更好地理解,我将名称 Role 更改为 Group。

但在你的情况下;

角色可以有很多用户 角色可以有很多权限

用户属于角色

那么你可以

$role = Role::where("name", "admin")->first();
$role->users()->get();

会给你属于管理员角色的所有用户..

不是:这是为了 laravel 4.2。