如何使用委托过滤 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。
我有一个使用委托包在 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。