0

会社のすべてのユーザーを選択しようとしています。ただし、「管理者」ロール ステータス (Entrust など) を持つユーザーのみ。

User::where('company_id', Auth::user()->company_id)->hasRole('admin')->get();

上記はエラーをスローしています。そのようなクエリを実行する方法について少し迷いました。これのどこが間違っているのですか?Entrust に関するドキュメントはほとんどありません。

4

2 に答える 2

1

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();
于 2015-11-28T06:49:02.513 に答える