created_at
создается current_timestamp
, если вы используете addDays(5)
, вы получите сообщения от функции. Это невозможно.
Честно говоря, вы можете добавить поле с именем expired_date
, и сравнение с этим полем будет довольно простым.
используйте laravel миграцию для добавления поля, например
$table->date('expired_date');
И как только вы создадите сообщение, вам нужно установить expired_date с помощью Carbon::now()->addDays(5)
;
и отфильтровать дату с истекшим сроком больше, чем сегодня.
public function index(){
$date = Carbon::now();
$date->addDays(5);
$posts = Post::where('status','=', 1)->whereDate('created_at','>=', $date)->get();
return view('home', compact('date', $date))->with('posts', $posts);
}
Если ваш status
поле только для различения guish срок действия истек или не истек, я думаю, вам не нужно это поле.
Однако, если вам действительно нужно это поле для поддержания статуса с истекшим сроком действия.
вам нужно обновлять его каждый день, попробуйте использовать Планирование задач
protected function schedule(Schedule $schedule)
{
$schedule->call(function () {
Post::where('expired_date', '<=', \Carbon\Carbon::today())->update(['status' => 0]);
})->daily();
}