php - Laravel 应用程序创建事件来更新数据库表

标签 php mysql laravel

我正在 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/

相关文章:

PHP查看字符串中的特殊字符

php - 为什么使用 SendGrid(和其他服务)

angularjs - AngularJS 的 CORS 错误仅在 FireFox 中发布

mysql - laravel 播种返回 undefined index

php - 直接从 PHP 将 JSON 插入 MongoDb

用于创建 setter 和 getter 的 PHP 注释包

javascript - 如何在 PHP 和 MySQL 中根据帖子 id 在分页中找到正确的页面

mysql - 使用mysql查询计算价格

java - 具有异步连接的 Java 中的 Getter 方法需要延迟

php - laravel查询绑定(bind)使用“<”或“>”失败