簡體   English   中英

如何使用委托過濾Laravel 5雄辯的查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM