Laravel(6.5.1)で、laravel-permission を使って権限管理をしております。
ひとりのuserにつき1つ以上のroleを割り当てています。
roles
テーブルのname
カラムはr1
~r100
のように権限の高いものほど数字が小さくなるようにしています。
Userモデルに以下のようにリレーションを定義しています。
php
1public function roles() { 2 return $this->morphToMany(\Spatie\Permission\Models\Role::class, 'model', 'model_has_roles', 'model_id', 'role_id', 'id', 'id'); 3}
ユーザーの一覧を取得する場合、すべてのユーザーの場合は以下のように取得できました。
php
1$users = App\User::with('roles')->all();
例えば**r20
以上(つまりr1
~r20
のいずれか)の権限を持ったユーザーの一覧を取得する**必要があり、いろいろ調べて試しているのですがうまくいかず詰まってしまいました。
うまく絞り込んで取得するにはどのような方法があるでしょうか?
アドバイスをいただければ幸いです。
※一旦全件取得してから以下のように絞り込むことはできたのですが、おそらくベストな方法ではないと思います。
php
1$users = $users->map(function($item){ 2 $item->roles->filter(function($item){ 3 return $item->min('name'); 4 }); 5 return $item; 6});
※最終的にはページネーションやソートなども必要なのですが、ひとまず現時点では忘れています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/20 10:17 編集
2019/12/22 09:56 編集
2019/12/23 09:51