User::All()
はモデルオブジェクトではないコレクションを返します。モデルオブジェクトを取得し、->permissions()
を使用するには、コレクションを繰り返し処理します。 exapmleについては
:
$users = User::all();
foreach ($users as $user) {
$user->permissions->contains('name', 'access.backend.admin'); // returns boolean
}
それともとしてDBから単一のモデルを取得することができます。
$user = User::first();
$user->permissions->contains('name', 'access.backend.admin'); // returns boolean
アップデート1
希望の許可使用にfilter()メソッドが含まれているユーザーを取得するにはとして:
$filtered_users = $users->filter(function ($user) {
if ($user->permissions->contains('name', 'access.backend.admin')) {
return $user;
}
});
アップデート2
としてあなたはまた、目的の結果を返すクエリを記述することができます。私は、質問とタグの同様のケースを持って
$filtered_users = User::whereHas('permissions', function($q) {
$q->where('name', 'access.backend.admin');
})->get()
を行うことができます::すべての() - >パーミッション() - >含まれています( '名前'、 'access.backend.admin') - > GET (); – umefarooq
@umefarooq User :: all()はモデルオブジェクトではないコレクションを返しますので、 ' - > permissions()'関数はコレクションでは機能しません。 –