在laravel中无法获得搜索组合

时间:2018-03-01 14:54:39

标签: php laravel

我有这个问题:

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

我得到的错误:

  

非法的运营商和价值组合。

1 个答案:

答案 0 :(得分:0)

您需要检查输入数据,并且在此类查询中不允许null

// $max_price is null
->orWhere('price', '>=', $max_price)

其中一个输入字段是null,这就是您收到错误的原因。

您还应该add use() to the closure

function($query) use($brand) {
    $query->whereIn('brand_id', $brand);
})