Как я могу игнорировать текущий идентификатор строки только один раз - PullRequest
0 голосов
/ 08 декабря 2018

У меня есть пользовательский запрос, где игнорируется идентификатор текущей строки:

$relatedVacancies = \App\Vacancy::whereHas('skills', function ($q) use ($vacancy) {
    return $q->whereIn('skill_id', $vacancy->skills->pluck('skill_id')); 
  })->where('id', '!=', $vacancy->id)
  ->orWhere('employment', $vacancy->employment)->where('id', '!=', $vacancy->id)
  ->orWhere('title', 'like', '%'.$vacancy->title.'%')->where('id', '!=', $vacancy->id)
->get();

Как я могу использовать это условие только один раз:

->where('id', '!=', $vacancy->id)

Ответы [ 2 ]

0 голосов
/ 08 декабря 2018

Попробуйте (на основе https://laravel.com/docs/5.7/queries#parameter-grouping):

$relatedVacancies = \App\Vacancy::where('id', '!=', $vacancy->id)
         ->whereHas('skills', function ($q) use ($vacancy) {
             return $q->whereIn('skill_id', $vacancy->skills->pluck('skill_id')); 
         })
         ->where(function ($query) {
            $query->where('employment', $vacancy->employment)
                  ->orWhere('title', 'like', '%'.$vacancy->title.'%');
        })
        ->get();

Также проверьте этот ответ: https://stackoverflow.com/a/23009807/5458355

0 голосов
/ 08 декабря 2018

Если вы пытаетесь выбрать на основе трех условий:

->where([
  ('id', '!=', $vacancy->id),
  ('employment', '=', $vacancy->employment),
  ('title', 'like', '%'.$vacancy->title.'%'),
])->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...