handle 未进行处理?

我通过 日志打印我发现,

public function __construct(Order $order,$delay)
    {
        $this->order = $order;
        $this->delay($delay);
        Log::error('开始延迟');
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        Log::error('我已经在处理了');
        // 检查是否已经支付
        if( $this->order->paid_att ) {
            return;
        }

        // 关闭订单
        \DB::transaction(function (){
            $this->order->update(['closed' , true]);
            // 循环订单中的信息
            foreach ($this->order->items() as $item) {
                $item->producutSku->addStock($item->amount);
            }
        });
    }

第二个日志没有打印出来,这是什么问题呢

每天3小时...加油
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
leo
最佳答案

@surest

  1. update() 方法参数用错了;
  2. 循环应该是 items 而不是 items()

以后遇到问题建议先和课程的代码仔细比对再来提问题。

5年前 评论
讨论数量: 10
leo

队列处理器是否已经启动?是否到达自动关闭订单时间?

5年前 评论
leo

@surest

  1. update() 方法参数用错了;
  2. 循环应该是 items 而不是 items()

以后遇到问题建议先和课程的代码仔细比对再来提问题。

5年前 评论

@leo

明明有值,为什么会出现这种情况呢


 Log::error('我已经在处理了3');
        // 关闭订单
        $this->order->update(['closed' , 1]);
        Log::error($this->order->closed);
        Log::error($this->order);
        ------------------------------------------------
[2018-09-20 01:09:43] local.ERROR: 我已经在处理了1  
[2018-09-20 01:09:43] local.ERROR: 我已经在处理了3  
[2018-09-20 01:09:43] local.ERROR:   
[2018-09-20 01:09:43] local.ERROR: {"id":49,"no":"20180920010940977339","user_id":1,"address":{"address":"\u6cb3\u5317\u7701\u77f3\u5bb6\u5e84\u5e02\u957f\u5b89\u533a\u7b2c53\u8857\u9053\u7b2c782\u53f7","zip":89726,"contact_name":"Ms. Kaia Legros","contact_phone":"+17188369778"},"total_amount":"6959.00","remark":null,"paid_at":null,"payment_method":null,"payment_no":null,"refund_status":"pending","closed":false,"reviewed":false,"ship_status":"pending","ship_data":null,"extra":null,"created_at":"2018-09-20 01:09:40","updated_at":"2018-09-20 01:09:40"}  
[2018-09-20 01:09:43] local.ERROR: 我已经在处理了4  
[2018-09-20 01:09:54] local.INFO: select count(*) as aggregate from `products` where `on_sale` = "1"
5年前 评论

@leo 嗯,我排查了好久,最后发现是$casts的问题

当我把 'closed' => 'boolean' 这样设置的时候,我读取不到closed的值,

同时我使用update更新数据,没有反应

最后解决办法

$this->order->closed = 1; $this->order->save();

5年前 评论
leo

@surest 先和课程的代码仔细比对再来提问题

5年前 评论

@leo 嗯嗯,我主要写代码的时候没有参照教程一模一样的来,所以可能在有点地方不一样,谢谢您啊

5年前 评论

@leo 请教一下,我的任务能执行,closed变成1。但是handle方法也没执行?

file

file

5年前 评论
leo

@姑射什人 Handle 方法没执行 closed 怎么变成 1?

5年前 评论

@leo 我说错了,$this->order->items是空的,应该是订单回到库存没执行,不知道怎么回事?

file

file

file

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!