Ich arbeite an einem API-Endpunkt, der eine Liste der Benutzer zurückgibt, die über alle angegebenen Dienst-IDs verfügen.
In meinem Fall:
- Benutzer können viele Dienste haben
- Tables: 'Nutzer', 'Dienstleistungen', 'service_user'
ich ein Array über Vue JS am Übergang zu mein Endpunkt zum Beispiel:
/endpoint/32,35,38
Meine Frage ist jetzt:
$servicesArray = explode(',', $services);
$users = User::whereHas('services', function ($query) use ($servicesArray) {
foreach ($servicesArray as $key => $value) {
$query->where('id', $value);
}
})
->get();
Das Problem ist, dass es jetzt Ergebnisse zurückgibt, auch wenn ein Benutzer die richtigen Dienste hat. Meine Beziehung ist in Ordnung, und wenn ich nur einen Dienst an den Endpunkt übergebe, gibt er einen Benutzer korrekt zurück, dem dieser Dienst zugewiesen wurde. Ich habe whereIn zuvor verwendet, aber ich muss nur Benutzer anzeigen, die ALLE im Endpunktarray angegebenen Dienste haben.
Ein offensichtlicher Grund, warum, was ich habe, funktioniert nicht wie erwartet?
@BenRoob Es gibt, aber das gibt alle Ergebnisse zurück, wo alle Array-Werte übereinstimmen. Ich brauche diese, um nur dorthin zurückzukehren, wo alle Array-Felder übereinstimmen. – Lovelock
Sorry, total vermisst ... Ich werde meine Scheiße löschen !! – BenRoob