Laravel где и или где в запросе - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть запрос с фильтрацией.Во многих полях есть оператор 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();

Если я теперь запрашиваюодна работа, все работает.Но если я запрашиваю несколько вакансий, я ничего не получаю.Это потому, что я ищу вакансию с несколькими рабочими отношениями, но это отношение oneToMany.Если я использую orWhere, фильтрация не работает.Как я могу добиться, чтобы я получал вакансии от нескольких вакансий, но другой фильтр все еще применяется?

...