【问题标题】:Laravel Updated Event Not Working ProperlyLaravel 更新事件无法正常工作
【发布时间】:2020-12-24 03:19:18
【问题描述】:

Laravel 版本:7.14.1

这是我的电子邮件模型。

 class Email extends Model {

    public static function boot() {
        parent::boot();
        static::updated(function($obj) {
            \Log::info('1-'.$obj->status); 

            if($obj->status==='active') {
                \Log::info('2-'.$obj->status);

                $obj->sendCampaign();
            }
        });
    }

   public function sendCampaign()
    {
        $campaign = $this;

        dispatch(new SendEmailJob($campaign ));

        $campaign->status='sent';
        $campaign->save();

        \Log::info('3-' . $campaign->status);

    }
}

##old 状态为sent。我刚刚将其更新为active

这是我的日志结果:

[2020-09-04 16:47:57] local.INFO: 1-active  
[2020-09-04 16:47:57] local.INFO: 2-active  
[2020-09-04 16:47:58] local.INFO: 1-sent  
[2020-09-04 16:47:58] local.INFO: 3-sent 

根据我的逻辑和日志结果,我认为最终状态列应该是sent

但是当我在 db 上看到它时,它是 active。 我测试了 5 次,结果都是一样的。

谁能帮帮我?

【问题讨论】:

    标签: php laravel eloquent laravel-events


    【解决方案1】:

    我建议你写一个关于它的测试并检查它是否真的有效。

    您可以在测试中使用 Event::fake(),然后使用函数 shouldreceive() 进行检查。

    我认为这是做事的最佳方式。

    【讨论】:

      猜你喜欢
      • 2016-03-03
      • 2017-06-17
      • 2017-05-13
      • 1970-01-01
      • 2018-10-23
      • 2012-09-14
      • 2020-06-16
      • 2017-04-28
      • 1970-01-01
      相关资源
      最近更新 更多