Job::dispatch($model)->delay(now()->addHours(2));
P.P.S. Задачу еще пожно решить через MySQL Events: https://dev.mysql.com/doc/refman/5.7/en … duler.html
]]>Конечно сначала надо подумать, а нельзя ли вместо хранения статуса вычислять его. Дата-время публикации ты знаешь, текущее время тоже, MySQL и PHP умеют оперировать датами. Вместо "скрывать" поставь слово "не показывать" или "не получать из базы". Преимущества:
- в любой момент ты можешь поправить продолжительность периода показа и это сразу отразится на выдаче, без правки чего-то в базе
- даже если ты не настроил cron на вызов ларавельного шедулера, это будет работать
- после backup/restore ты видишь картину как она должны быть, а не какой она была когда-то давно.
На SQL это выглядит примерно так:
SELECT *
FROM articles
WHERE created_at > NOW() - INTERVAL 5 DAY
$this->articles->where('status', 0)->where('created_at', '<', now()->subHours(2))->update(['status' => 1]);
Запускай команду каждую минуту или пять минут с помощью планировщика задач.
]]>Задача состоит в том что бы через определенное количество времени после того как article опубликован (скажем 2 часа), скрыть его, то есть сменить status.
Как такое можно реализовать на laravel? Заранее спасибо !!!