Laravel Carbon, запрашивающая базу данных, где дата поля на 2 недели меньше, чем она сама - PullRequest
0 голосов
/ 01 октября 2018

У меня есть модель Election, в которой я пытаюсь написать запрос, который покажет мне конкретные результаты.

Идея довольно проста:

Выборы starting_date, например, 15/10 / 2018.

Мне нужен мой запрос, чтобы показать все elections, которыеначнется в ближайшие 2 недели.

Я имею в виду, что для этого конкретного случая сегодня 01/10/2018, поэтому мне нужны все выборы, которые начнутся в период 01/10/2018 - 15/10/2018.

ТакЯ пытался написать что-то вроде:

public function notificationBeforeCollection() {
    return $this->activeElections()
        ->where('start_collection', '>=', Carbon::now()
        ->subDays(14)->format('Y-m-d'))
        ->where('start_collection', '<', Carbon::now()
        ->format('Y-m-d'));
}

Но это не работает, и похоже, что это не может работать, сравнивая starting_date с сегодняшним днем.Похоже, мне нужно написать что-то вроде:

where('starting_date', '>=', 'starting_date'->subDays(14);

Если я прав, есть ли способ использовать Carbon против поля в построителе запросов?

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Чтобы получить «Выборы» двух недель с завтрашнего дня

// using 'Carbon'
$start_date = Carbon::now()->addDay()->format('Y-m-d');
$end_date = Carbon::now()->addDays(14)->format('Y-m-d');

public function notificationBeforeCollection() {
    return $this->activeElections()->whereBetween(
        'start_collection', [$start_date, $end_date]
    );
}
0 голосов
/ 01 октября 2018

Ваш фактический запрос ищет все выборы, которые начались 14 дней назад.

Вам нужно сделать что-то вроде:

 return $this->activeElections()->where('start_collection', '>', Carbon::today())
          ->where('start_collection', '<=' Carbon::today()->addDays(14));
...