2017-12-05 1 views
0

Ich habe Tabellen Kunden, Produkte und customer_products. In customer_products gibt es id, customer_id und product_id Spalten. Im Suchformular habe ich 'products' Eingabefeld, und kann mehrere Produkte für die Suche hinzufügen. Also, in diesem Fall ist $request->products Array, und ich möchte dieses Array in Query Builder übergeben, um alle Kunden zurückzugeben, die mindestens alle Produkte von $request->products Array gekauft haben. Wenn jeder Kunde nur ein Produkt hätte, würde ich dann whereIn Methode verwenden, aber wenn Kunden mehrere Produkte bestellt haben, habe ich keine Idee, wie man das löst. Ich habe mit foreach versucht, aber ich habe nicht das Ergebnis, das wollen.Laravel - Abfrage Builder mit Pivot-Tabelle, zurück, wo alle in

Antwort

0

Ich habe endlich eine Lösung gefunden. Wenn jemand das gleiche Problem hat, ist dies eine Lösung, die mir korrekte Ergebnisse liefert, wofür ich die Methode benötige:

$customesrs = Customers::with('products'); 
if($request->has('products')) 
{ 
    foreach($request->products as $product) 
    { 
    $customers->whereHas('products', function($query) use ($product) { 
    $query->where('product_id', $product); 
    }); 
    } 
} 
$customers->get();