[英]How to fix Laravel BadMethodCallException when using Entrust
[英]How to filter Laravel 5 eloquent query using entrust
我有一個使用entrust軟件包在Laravel 5中制作的應用程序:
https://github.com/Zizaco/entrust/tree/laravel-5
我有一個已經可以正常運行的查詢,它可以使分頁用戶與搜索字符串匹配,如下所示:
User::like($search)->skip($offset)->take($limit)->get()
使用entrust,我有一個名為admin的角色,因此我將如何調整此查詢,使其僅返回具有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)中使用了委托(entrust)並重新編寫了邏輯,因為它可以正確滿足我的需求。 為了更好地理解,我將角色名稱更改為Group。
但是就你而言
角色可以有很多用戶角色可以有很多權限
用戶屬於角色
那你可以
$role = Role::where("name", "admin")->first();
$role->users()->get();
會給您屬於管理員角色的所有用戶。
不是:這是針對laravel 4.2。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.