У меня есть работа, которая должна закрыться в конце даты, указанной в столбце expires_on
.
Таким образом, если срок действия истекает 05/11/2018, срок действия задания истекает в 11:59 этой даты.
Мой текущий запрос:
$job_posts = JobPost::where('expires_on', '<', Carbon::now())
->where('status', '<>', 'Closed')
->get();
Однако этот запрос закрывает задание в полночь (00:00), так как это фактически начало этого дня, я бы предпочел, чтобы оно закрылось в конце указанной даты, а не в начале.
Было бы правильнее сделать это:
$job_posts = JobPost::where('expires_on', '<', Carbon::now())
->addDay(1))
->where('status', '<>', 'Closed')
->get();
Или это:
$job_posts = JobPost::where('expires_on', '<', Carbon::now())
->endOfDay())
->where('status', '<>', 'Closed')
->get();
Обновление
Я изменил поле expires_on на datetime
поле, и в моей модели, которая ссылается на вакансии, я создал мутатор, который всегда устанавливает время закрытия 23:59:59, например:
/**
* Set the expiry date to always be 11:59PM on the given day
*
* @param string $value
* @return void
*/
public function setExpiresOnAttribute($value)
{
$this->attributes['expires_on'] = Carbon::parse($value)->endOfDay();
}
Это означает, что мой оригинальный код должен, теоретически, выполнять работу, так как время окончания работы больше не полночь (00:00:00)