marcov4lente
3/7/2015 - 2:27 PM

Adding an OR condition group amongst multiple AND conditions within an arbitrary Eloquent ORM query.

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();