我正在 Laravel 中开发一个应用程序,我的概念是订单将由买家发布以购买特定商品。我的设置是订单有效期 5 分钟。此订单将通知给距离买家位置最近的卖家。 5 分钟完成后,需要获取已查看卖家的列表,然后需要更改订单状态作为超时。我必须在 VPS 托管的 Laravel 应用程序中执行此操作。我可以创建事件来监听订单并使用订单日期时间和当前日期时间更新状态。现在我有如下代码并手动触发此 API,是否有其他方法可以自动执行此操作。请帮助任何人
$postrequests = Buyrequest::where('request_closed' , 0)->whereDate('request_on', '=', date('Y-m-d'))->get();
if(count($postrequests) >0){
$trade_execution = Adminsetting::where('id_admin_settings', 1)->selectRaw("TIME_TO_SEC(trade_execution_time) / 60 as trade_execution_time")->first();
}
foreach($postrequests as $request){
if(Carbon::createFromFormat('Y-m-d H:i:s', $request->request_on) < Carbon::now()->subMinutes($trade_execution->trade_execution_time)->toDateTimeString()){
if($request->request_status == 0){
Buyrequest::where('id_buyrequest', $request->id_buyrequest)->update(['request_status' => 2, 'request_closed' => 1]);
}else{
Buyrequest::where('id_buyrequest', $request->id_buyrequest)->update(['request_closed' => 1]);
}
}
}
最佳答案
您可以设置queue worker来处理这种情况。如果创建了购买请求,那么您可以 dispatch job并延迟到5分钟,那么worker会在5分钟后消耗它。
dispatch((new BuyRequestJob($buyRequestId))->delay(now()->addMinutes(5));
关于php - Laravel 应用程序创建事件来更新数据库表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49422293/