где между датами не работает - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь сделать поисковый запрос по возрасту в Laravel.Однако, когда я пытаюсь сделать запрос между двумя датами, я не получаю результатов обратно.Мой код выглядит так:

    $today = Carbon::today();
    $age_from = $today->subYears($request->age_from)->toDateString();
    $age_to = $today->subYears($request->age_to)->toDateString();

    $users->whereBetween('birthday', [$age_from, $age_to]);

    //Get matching users.   
    $users = $users->Paginate(self::paginate);

Запрос выглядит правильно, когда я проверяю с помощью mySql (), но по какой-то причине я не получаю никаких результатов.Синтаксическая ошибка может быть?Неправильное использование toDateString и сравнение даты MySQL?

РЕДАКТИРОВАТЬ: Выходные данные $ age_from:

Carbon @959558400 {#245 ▼
date: 2000-05-29 00:00:00.0 UTC (+00:00)
}

Выходные данные $ age_to:

Carbon @-302745600 {#245 ▼
date: 1960-05-29 00:00:00.0 UTC (+00:00)
}

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Благодарю всех, но особенно @skovmand и @Jonas Staudenmeir за помощь;Я решил проблему, упростив код @ skovmand, и, что более важно (и глупость с моей стороны), даты следует поменять местами, поэтому вместо [$ age_from, $ age_to] это [$ age_to, $ age_from], как $age_to очевидна дата начала.Но спасибо, ребята!^ _ ^

0 голосов
/ 29 мая 2018

Причина в том, что вы мутируете объект $today дважды.Если вы отметите, $age_from имеет то же значение, что и $age_to после строки 3.

Вместо этого следует написать:

$today = Carbon::today();
$age_from = $today->copy()->subYears($request->age_from);
$age_to = $today->copy()->subYears($request->age_to);

или просто

$age_from = Carbon::today()->subYears($request->age_from);
$age_to = Carbon::today()->subYears($request->age_to);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...