Сделать планировщик для удаления уведомлений, которые через 15 дней в laravel? - PullRequest
0 голосов
/ 05 июля 2018

Итак, у меня есть таблица уведомлений, в которой есть поле create_at, которое я могу использовать для удаления уведомлений, которым уже исполнилось 15 дней.

Мой код планировщика:

$schedule->call(function () {

$now = \Carbon\Carbon::now();


DB::table('notifications')
             ->where($now->diffInDays('created_at'), '>', 15)
             ->delete();

    })->daily();
}

Но это дает ошибку:

DateTime::__construct(): Failed to parse time string (created_at) at position 0 (c): The timezone could not be foun
  d in the database

Как мне решить это? И есть ли другой способ использовать только php?

1 Ответ

0 голосов
/ 05 июля 2018

Ошибка, которую вы получаете, заключается в том, что вы пытаетесь получить разницу между объектом Carbon и строкой ('creation_at'). Вы можете исправить это, изменив предложение where следующим образом

->where('created_at', '<', $now->subDays(15))

Или вместо этого вы можете написать необработанный запрос.

...