Я хотел бы преобразовать следующий оператор sql в сборку запросов Laravel:
SELECT
*
FROM
view_orderline_manifest_data
where
OrderID = 7
and (
ProdCategoryParentID != 4
or ProdCategoryParentID IS NOT NULL
)
Пробовал следующее:
$orderlinedata=DB::table('view_orderline_data')
->select('ProdName','ProdID')->where('CustID',$CustID)
->where('OrderID',$OrderID)
->where('ProdCategoryParentID','!=' , 4)
->orWhereNull('ProdCategoryParentID')
->pluck('ProdName','ProdID')->all();
Проблема в том, что выполняется следующее:
SELECT
*
FROM
view_orderline_manifest_data
where
OrderID = 7
and ProdCategoryParentID != 4
or ProdCategoryParentID IS NOT NULL
по существу скобки () не применяются.


Чтобы получить желаемый результат, вам нужно передать замыкание второму where в вашем коде.
$orderlinedata=DB::table('view_orderline_data')
->select('ProdName','ProdID')->where('CustID',$CustID)
->where('OrderID',$OrderID)
->where(function ($query) {
$query->where('ProdCategoryParentID','!=' , 4)
->orWhereNull('ProdCategoryParentID');
})
->pluck('ProdName','ProdID')->all();
Документация Laravel по группировке параметров с помощью построителя запросов
Я надеюсь, что это помогает!
$orderlinedata = ViewOrderlineData::where('CustID',$CustID)
->where('OrderID', $OrderID)
->where(function ($query){
$query->where('ProdCategoryParentID', '!=', 4)
->orWhereNull('ProdCategoryParentID');
})->pluck('ProdName','ProdID');