Laravel: запрос возвращает неверные результаты - PullRequest
2 голосов
/ 03 апреля 2019

У меня есть специальный код для получения вакансий:

Laravel Eloquent запрос:

$vacancy = new Vacancy;
$vacancy = $vacancy->has('user')->orWhere('is_express', 1);
$where = [];
$date = Carbon::now()->subDays(10);
$where[] = ['deleted_at', null];
$where[] = ['updated_at', '>=', $date];
$employment = [0];
$vacancy = $vacancy->whereIn('employment', $employment);
$vacancy = $vacancy->where($where)->get();

Код SQL:

select * from `vacancies`
where(exists(select * from `users`
    where `vacancies`.
    `user_id` = `users`.
    `id`
    and `users`.
    `deleted_at`
    is null) or `is_express` = 1 and `employment` in ( 0 ) and(`deleted_at`
    is null and `updated_at` >= '2019-03-22 08:48:34' )) and `vacancies`.
`deleted_at`
is null

Здесь - это структура моей таблицы.

Когда я запускаю этот код или SQL-запрос, возвращаются вакансии с любым employment. Например, здесь, в моем коде, мне нужно вакансии только с employment = 0, но мой текущий результат возвращает вакансии с любыми вакансиями.

Где в моем коде ошибка?

1 Ответ

5 голосов
/ 03 апреля 2019

Можете ли вы попробовать это:

$vacancy = Vacancy::whereNull('deleted_at')->where('updated_at', '>=', $date)
  ->whereIn('employment', $employment)
  ->where(function($query) {
    return $query->has('user')->orWhere('is_express', 1);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...