Laravel是否在失效日期的第二天之后删除表格记录?

mspsb9vt  于 2023-02-05  发布在  其他
关注(0)|答案(1)|浏览(85)
Coupon::where('expire_date','<',Carbon::tomorrow())->delete(); 
// OR
Coupon::where('expire_date','<',Carbon::yesterday())->delete();
k4aesqcs

k4aesqcs1#

如果你想得到所有的优惠券的到期日(+1天)是小于今天,你可以用一个原始查询.
您可以选择使用Carbon::today()(时间始终为00:00:00)还是Carbon::now()

Coupon::where(DB::raw('expire_date + INTERVAL 1 DAY'), '<', Carbon::now())->delete();

您还可以将此逻辑移到Coupon模型的查询范围中。
x一个一个一个一个x一个一个二个x
如果希望自动执行此操作,则需要在"排定程序"中进行设置。

# app/Console/Kernel.php

protected function schedule(Schedule $schedule)
{
    $schedule->call(fn() => Coupon::expired()->delete())->daily();
}

要使调度程序独立运行,需要将以下条目添加到服务器的crontabs中

* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1

相关问题