2016-07-04 6 views
1

kann ich den folgenden AnrufMit in_array innerhalb elequent Anruf

$userGroups = Auth::user()->getGroups(); 

Die oben ausgeben wird etwa wie folgt

array:10 [▼ 
    0 => "Admin" 
    1 => "TeamA" 
    3 => "USA" 
    4 => "security" 
    9 => "Users" 
] 

So kann ich sehen, dass ich bin ein Mitglied von allen oben genannten Gruppen. Ich habe auch eine Client-Tabelle, und eines der Felder dieser Tabelle ist Team. Ein Beispiel Client ist wie so

#attributes: array:11 [▼ 
    "id" => "3" 
    "clientName" => "Some Client" 
    "contactEmail" => "" 
    "team" => "TeamA" 
    "created_at" => "2016-07-04 15:08:15" 
    "updated_at" => "2016-07-04 15:08:15" 
] 

Was ich versuche, alle Kunden zu tun bekommen, die ein Team hat, den Teil der angemeldeten Benutzer Gruppen. So können Sie sehen, dass ich ein Teil von TeamA bin, deshalb möchte ich alle Clients, die einen Teamwert von TeamA haben. Ich dachte etwas entlang der Linien dieser

$clients = Client::where('team', in_array('TeamA', $userGroups))->get(); 

Das obige gibt eine leere Ergebnismenge zurück, aber hoffentlich zeigt es, was ich danach bin.

Wie kann ich das erreichen?

Dank

+0

Das klingt, dass ein 'verwenden sollte -> bei()' eloquent Klausel. Schauen Sie sich die Dokumentation hier an: https://laravel.com/docs/5.1/queries#where-clauses –

Antwort

2

Es klingt, als ob Sie für whereIn suchen:

$clients = Client::whereIn('team', $userGroups)->get(); 
+1

Danke für den Tippfehler! –

+0

Perfekt, genau was ich wollte. Eine Sache, obwohl Sie den Pfeil nach dem :: Danke getan haben –

1

Klingt wie Sie nur eine einfache wollen, "wo"?

$clients = Client::where('team', 'TeamA')->get(); 

Sie erhalten alle Kunden, die ein Team von "TeamA" haben.

Wenn Sie alle Clients für mehrere Gruppen erhalten möchten, verwenden Sie "worin":

$clients = Client::whereIn('team', $userGroups)->get();