2017-05-08 2 views
0

Ich möchte alle Benutzer abrufen, die die eine oder andere Rolle haben. Ich habe so versucht und es funktioniert nicht:Laravel kombiniert where Klausel

$dentist = Role::where('name', 'dentist')->orWhere('name', 'local_admin')->first()->users()->where('clinic_id', $user->clinic_id)->get(); 

$dentist = Role::where('name', ['dentist', 'local_admin')->first()->users()->where('clinic_id', $user->clinic_id)->get(); 

$dentist = Role::whereIn('name', ['dentist', 'local_admin')->first()->users()->where('clinic_id', $user->clinic_id)->get(); 

Gibt es eine einfache Lösung dafür?

+0

Haben Sie ein abschließendes Quadrat Brac verpasst für die dritte und vierte Codezeile? – Dinoop

Antwort

0

Sie müssen define the relationshipRole hasMany users dann Sie users mit with

$dentist = Role::with(['users' => function($query){ 
    $query->where('clinic_id', $user->clinic_id); 
    })]) 
    ->where('name', 'dentist') 
    ->orWhere('name', 'local_admin') 
    ->first(); 

Dies Sie Rollenmodell

/** 
* Get the users for the role. 
*/ 
public function users() 
{ 
    return $this->hasMany(User::class); 
} 

zugreifen können

würde dies in Ihrem User-Modell gehen würde

/** 
* Get the role the user. 
*/ 
public function role() 
{ 
    return $this->belongsTo(Role::class); 
}