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

时间:2015-03-06 00:56:44

标签: php laravel laravel-5

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

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

我的查询已经运行良好,可以获得与搜索字符串匹配的分页用户:

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

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

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

2 个答案:

答案 0 :(得分:2)

您可以尝试这样的事情:

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...
}

答案 1 :(得分:0)

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

但在你的情况下;

角色可能有很多用户 角色可以拥有许多权限

用户属于角色

然后你可以

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

会为您提供属于admin角色的所有用户..

不:这是laravel 4.2。