在app/Console/Commands下创建OrderCancle文件
php artisan make:command OrderCancle
OrderCancle文件
<?php
namespace App\Console\Commands;
use App\Models\Order;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Log;
class OrderCancle extends Command
{
/**
* The name and signature of the console command.
* command 名称
* @var string
*/
protected $signature = 'order_cancle';
/**
* The console command description.
* command 描述
* @var string
*/
protected $description = 'order cancle';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
* 业务逻辑,三天前的未支付订单,取消
* @return int
*/
public function handle()
{
try {
$productIds = Order::query()->where('trade_status','=',0)->where('created_at','<',date('Y-m-d H:i:s',time()-(3*24*3600)))->pluck('id');
Order::query()->whereIn('id',$productIds)->update(['trade_status' => 2]);
}catch (Exception $exception){
Log::info($exception);
}
}
}
Kernel
<?php
namespace App\Console;
use App\Console\Commands\OrderCancle;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [
OrderCancle::class //引入command
];
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
$schedule->command('order_cancle')->everyMinute(); //每分钟执行一次该command
}
/**
* Register the commands for the application.
*
* @return void
*/
protected function commands()
{
$this->load(__DIR__.'/Commands');
require base_path('routes/console.php');
}
}
执行:
php artisan make:command OrderCancle
php artisan schedule:run