Laravel 5查询“;其中(a或b或c)和(d或e或f)以及。。。(x或y或z)“;

Laravel 5查询“;其中(a或b或c)和(d或e或f)以及。。。(x或y或z)“;,laravel,Laravel,我正在尝试循环一个类似于laravel标题中的查询。每个循环都是一个新的“和(x或y或z)”状态 以下是我所拥有的: $offers = Offer::query(); foreach($values as $val){ $offers->where('title', 'LIKE', '%'.$val.'%') ->orWhere('company', 'LIKE', '%'.$val.'%') ->orWhere('location', 'LIKE',

我正在尝试循环一个类似于laravel标题中的查询。每个循环都是一个新的“和(x或y或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(函数($query,$val)
行中给了我一个错误:
缺少App\Http\Controllers\OffersController::App\Http\Controllers\{closure}()

我可以很容易地在循环中编写原始SQL查询,但我确实希望在这里使用Laravel的ORM


你知道如何实现吗?谢谢!

当然,答案很简单:
$offers->where(函数($query)use($val){…


:-)

看看这里谢谢你的指针,我以前也试过,但我得到了以下错误:App\Http\Controllers\OffersController::App\Http\Controllers\{closure}()缺少参数2这是一个奇怪的错误,尝试用尝试的代码更新你的问题。哦,我刚刚发现我做错了什么:
函数($query,$val)
应该是
函数($query)使用($val)
。我总是忘记“使用”…你能用你找到的解决方案回答你自己的问题吗?