2017-05-21 7 views
1

Ich habe eine M-M-Beziehung auf User und Roles. Auch eine User gehört zu Clinic. Ich möchte alle Benutzer herausfiltern, die zu einer Rolle gehören, die spezifische clinic_id haben. Ich versuche, mit diesem einen, aber es funktioniert nicht:Laravel wo auf Beziehung

$user = Role::where('name', 'admin')->first() 
       ->users->where('clinic_id', Auth::user()->clinic_id)->get(); 

Ich erhalte einen Fehler auf diesen einen

Type error: Too few arguments to function Illuminate\Support\Collection::get(), 0 passed in 

Beziehung ist in Ordnung definiert, und wenn ich die with() exclued ich wieder alle Benutzer, die Administratoren sind.

Antwort

1

Ändern Sie roles basierend auf dem Namen Ihrer Rollenbeziehung.

$clinic_id = auth()->user()->clinic_id; 

$users = User::whereHas('roles', function ($query) { 
    $query->where('name', 'admin'); 
})->where('clinic_id', $clinic_id)->get();