sto usando eloqent per filtrare una serie di prodotti:multipla Dove In
Product::whereIn('color', $color)->whereIn('size', $size)->whereIn('price', $price)->get();
Ognuna delle variabili di cui sopra è una matrice di ID
$color = [1,2,4,5]
la mia domanda è, è questo inefficiente quando l'utente non riesce a inviare attraverso un insieme di variabili, ad esempio non desidera alcun filtro colore in modo che la matrice sia:
$color = [];
Ho provato -> toSql e produce l'istruzione SQL:
select * from `products` where `color` in (?, ?) and 0 = 1 and `price` in (?, ?, ?, ?, ?)
In precedenza nessun filtro dimensioni è stato inviato attraverso.
Cosa significa 0 = 1? E questo è un modo inefficiente di gestire le cose?
Grazie. Quindi dovrei fare qualcosa come $ query = Product :: all(); poi fai un controllo dove per ogni filtro e se non vuoto fai $ query-> whereIn ('myfilter', $ requestedFilter); Non farebbe comunque più di una query e sarà inefficiente? – panthro
@panthro no, 'Product :: all()' recupera tutti i prodotti contemporaneamente. Dovresti fare questo: '$ product = new Product ;, quindi controlla e aggiungi condizioni. – shaddy
Quindi sarebbe qualcosa come $ product = new Product; // controlla i filtri; $ Prodotto-> get(); – panthro