我正在尝试循环查询,例如laravel中标题中的查询。每个周期都是一个新的“AND(x OR y OR z)”条件。
这就是我所拥有的:
$offers = Offer::query();
foreach($values as $val){
$offers->where('title', 'LIKE', '%'.$val.'%')
->orWhere('company', 'LIKE', '%'.$val.'%')
->orWhere('location', 'LIKE', '%'.$val.'%')
->orWhere('country', 'LIKE', '%'.$val.'%')
->orWhere('country_code', 'LIKE', '%'.$val.'%');
}
$offers->get();
然而,这不符合我的要求。
我也试过这个:
$offers = Offer::query();
foreach($values as $val)
{
$offers->where(function($query, $val) {
$query->where('title', 'LIKE', '%'.$val.'%')
->orWhere('company', 'LIKE', '%'.$val.'%')
->orWhere('location', 'LIKE', '%'.$val.'%')
->orWhere('country', 'LIKE', '%'.$val.'%')
->orWhere('country_code', 'LIKE', '%'.$val.'%');
});
}
$offers = $offers->distinct()->get();
但这会在$offers->where(function($query, $val)
行给出错误:Missing argument 2 for App\Http\Controllers\OffersController::App\Http\Controllers\{closure}()
我可以轻松地在循环中编写原始SQL查询,但我真的想在这里使用Laravel的ORM。
任何想法如何实现?谢谢!
答案 0 :(得分:0)
当然,答案很简单:
$offers->where(function($query) use ($val) {...
: - )