Clausola where tra parentesi in Eloquent
Diciamo che dal titolo forse non si capisce bene cosa intendo o cosa mi serva.
Soprattutto perchè da quando uso Eloquent è la prima volta che ho questa necessità, quindi non mi ero mai posto il problema.
Quindi partirei direttamente dalla query:
SELECT *
FROM mp_giacenze_attr
INNER JOIN mp_giacenze ON giac_id = gattr_giac_id
WHERE giac_feed = 'pf'
AND gattr_chiave = 'gross_weight'
AND (gattr_valore = '' OR gattr_valore = 0)
Come vedete nella WHERE ci sta una clausola tra parentesi tonde.
Ho scoperto che la funzione where di Eloquent accetta anche una funzione anonima come argomento.
Quindi possiamo fare così:
$query = MpGiacenzaAttr::query()
->join('mp_giacenze', 'giac_id', '=', 'gattr_giac_id')
->where('giac_feed', $feed)
->where('gattr_chiave', $chiave)
->where(function ($query) {
$query->where('gattr_valore', '')
->orWhere('gattr_valore', 0);
})
->get();
Enjoy!
php laravel eloquent database where
Commentami!