Laravel查询哪里和哪里

时间:2018-12-05 20:08:20

标签: php laravel eloquent relation

我有一个过滤查询。很多字段都有一个where语句,但是我也有多个选择,应该选择orWhere

我的查询如下:

$vacancies = Vacancie::select();
if($request->filled('jobs')) {
    $vacancies->whereHas('jobTitle', function ($q) use ($request) {
        foreach($request->jobs as $job) {
            $q->where('id', clean($job));
        }
    });
}
$request->filled('title') ? $vacancies->orWhere('title', 'like', '%' . clean($request->title) . '%') : null;
$request->filled('company') ? $vacancies->orWhere('company', intval($request->company)) : null;
if($request->filled('companyName') || $request->filled('zip') || $request->filled('city')) {
    $companyName = clean($request->companyName);
    $zip = clean($request->zip);
    $city = clean($request->city);
    $vacancies->whereHas('company', function ($q) use ($companyName, $city, $zip) {
        ($city) ? $q->where('city', 'LIKE', '%' . $city . '%') : null;
        ($zip) ? $q->where('zip', 'LIKE', '%' . $zip . '%') : null;
        ($companyName) ? $q->where('title', 'LIKE', '%' . $companyName . '%') : null;
    });
}
$vacancies->get()->toJson();

如果我现在查询一份工作,那么一切正常。但是,如果我要查询多个工作,我什么也得不到。那是因为我正在寻找具有多个工作关系的职位空缺,但这是一个一对多的关系。如果我使用orWhere,则过滤不起作用。我该如何获得多个职位的职位空缺,但另一个过滤器仍然适用?

0 个答案:

没有答案