我有这个问题:
$products = Product::whereIn('brand_id', $brand)->get();
返回所选品牌的结果。但是如果我想添加其他字段,例如最小和最大价格,则会返回错误,这是我的代码:
$brand = Input::has('brands') ? Input::get('brands') : [];
$min_price = Input::has('min_price') ? Input::get('min_price') : null;
$max_price = Input::has('max_price') ? Input::get('max_price') : null;
$products = Product::orWhere('price','>=',$min_price)
->orWhere('price','<=',$max_price)
->orWhereHas('brands',function($query){
$query->whereIn('brand_id', $brand);
})->get();
我得到的错误:
非法的运营商和价值组合。
答案 0 :(得分:0)
您需要检查输入数据,并且在此类查询中不允许null
:
// $max_price is null
->orWhere('price', '>=', $max_price)
其中一个输入字段是null
,这就是您收到错误的原因。
function($query) use($brand) {
$query->whereIn('brand_id', $brand);
})