假设你的订单模型是
Order
其中有一个
status
字段表示订单状态可以在模型内定义为以下常量:
//未支付 const STATUS_UNPAID = 0; //已支付 const STATUS_PAID = 1; //已取消 const STATUS_CANCEL = 2;
首先,在控制台中创建一个新命令:
php artisan make:command CancelUnpaidOrders
在
app/Console/Commands/
CancelUnpaidOrders.php
文件中的handle()
方法中,编写查询未支付订单并取消的逻辑:use App\Models\Order; use Carbon\Carbon; public function handle() { //创建时间超过 30 分钟且未支付的订单 $unpaidOrders = Order::where('status', Order::STATUS_UNPAID) //subMinutes(30) 方法是将当前时间往前推 30 分钟 ->where('created_at', '<', Carbon::now()->subMinutes(30)) ->get(); //并将这些订单的状态设置为已取消 foreach ($unpaidOrders as $orde
Laravel取消超时未支付订单
最新推荐文章于 2024-09-28 02:09:54 发布
本文介绍如何在Laravel应用中设置定时任务,自动检测并取消超过设定时间未支付的订单。通过创建命令和调度器,查询订单状态,并在控制台输出调试信息确保逻辑正确。
摘要由CSDN通过智能技术生成