Adding an OR condition group amongst multiple AND conditions within an arbitrary Eloquent ORM query.
$productAttribute1 = 'Small';
$productAttribute2 = 'Blue';
$productCategory1 = 3;
$productCategory2 = 8;
$productRecords = Product::select(array(
'product.sku as product_sku',
'product.title as product_title',
'product.description as product_description',
'product.price as product_price'
))
->leftjoin(
'product_attributes',
'product_attributes.product',
'=',
'product.id'
)
->where(
function ($query) use ($productAttribute1,$productAttribute2)
{
if ($productAttribute1 && $productAttribute2) {
$query
->where('product_attributes.size','=',$productAttribute1)
->orWhere('product_attributes.colour','=',$productAttribute2);
}
}
)
->where(
function ($query) use ($productCategory1,$productCategory2)
{
$query
->where('product.category','=',$productCategory1)
->orWhere('product.category','=',$productCategory2);
}
)
->where('product.status','=','1')
->get();