Ich baue eine App mit Eloquent und treffe ein bummer, ich benutze die Viele-zu-Viele-Pivot-Beziehung. ref: https://laravel.com/docs/5.0/eloquent#many-to-manyeloquent multiple whereHas ('pivot_table_X') UND whereHas ('pivot_table_X')
Benutzermodell
- id
- user_name
Role Model
- id
- role_name
Benutzer-Rollen-Modell (Pivot-Tabelle)
- id
- User_id
- ROLE_ID
Wenn ich will 1
alle Benutzer mit Role-ID bekommen, werde ich nur einfach:
$users = $app->users->with('roles')->has('roles')
->whereHas('roles' function($query) {
$query->where('role_id', 1);
})
->get();
Damit kann ich erfolgreich alle Benutzer mit Rollen id = 1.
[Problem] Jetzt Bummer, wenn ich alle Benutzer mit Role id = 1 AND Role id = 2
erhalten müssen (beide Administrator und Moderator in meinem Fall)
ich versuchte, läuft dies:
$users = $app->users->with('roles')->has('roles')
->whereHas('roles' function($query) {
$query->where('role_id', 1);
})
->whereHas('roles' function($query) {
$query->where('role_id', 2);
})
->get();
Aber erschöpft meine PHP Ausführungszeit, gibt es eine richtige Art und Weise zu handhaben? Ich hoffe wirklich auf den effizienten Weg, dies zu tun.
Danke
Sollte es nicht ** ODER ** anstelle von ** UND ** für bot die Rolle IDs sein? –
@SougataBose Hallo! Ich glaube, dass ** ** und **, weil Pivot-Modell-Tabelle hat mehrere ** role_id ** für eine einzelne ** user_id **, was ich erreichen möchte, erhalten alle ** Benutzer **, wo beide ID '2 und 3 'sind in der ** role_id ** –