Laravel Eloquent работает с обратными вызовами? - PullRequest
0 голосов
/ 15 января 2020

Я хочу, чтобы информация о соответствующем пользователе была отфильтрована по времени. Мой запрос выглядит следующим образом:

    $employer = $user->organizations->where('status', true)
        ->where('start_date', '<=', date("Y-m-d"))
        ->where(function ($query) {
            $query
                ->where('end_date', '>=', date("Y-m-d"))
                ->orWhereNull('end_date');
        });

Я получаю результаты без обратного вызова, но когда я ввожу обратный вызов для фильтрации данных по дате окончания, я получаю ошибку "explode() expects parameter 2 to be string, object given".

Как это следует реорганизовать, чтобы получить организации, в которых конечная дата не указана или находится в будущем?

Ответы [ 2 ]

0 голосов
/ 15 января 2020

В соответствии с Levente Otta комментариями выше, я изменил код на следующий;

        $employer = $user->organizations()->where('organization_user.status', true)
        ->where('organization_user.start_date', '<=', date("Y-m-d"))
        ->where(function ($query) {
            $query
                ->where('organization_user.end_date', '>=', date("Y-m-d"))
                ->orWhereNull('organization_user.end_date');
        })->get();
0 голосов
/ 15 января 2020

Вы должны вернуть функцию закрытия

попробовать это:

$employer = $user->organizations->where('status', true)
    ->where('start_date', '<=', date("Y-m-d")->toDateTimeString())
    ->where(function ($query) {
        return $query
            ->where('end_date', '>=', date("Y-m-d")->toDateTimeString())
            ->orWhereNull('end_date');
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...