会社のすべてのユーザーを選択しようとしています。ただし、「管理者」ロール ステータス (Entrust など) を持つユーザーのみ。
User::where('company_id', Auth::user()->company_id)->hasRole('admin')->get();
上記はエラーをスローしています。そのようなクエリを実行する方法について少し迷いました。これのどこが間違っているのですか?Entrust に関するドキュメントはほとんどありません。
company_id
最初にすべてのユーザーを取得する必要があると思います
$users = User::where('company_id', Auth::user()->company_id)->get();
次に、ループし$users
て確認しますhasRole()
foreach ($users as $user) {
if($user->hasRole('admin')){
//user is admin
}
}
アップデート
これは汚い解決策かもしれませんが、手動クエリを試すことができます
$admin = DB::table('role_user')
->join('users', 'users.id', '=', 'role_user.user_id')
->join('roles', 'roles.id', '=', 'role_user.role_id')
->where('roles.name', 'admin')->get();