问题描述
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次,但结果却是相同的。
有人可以帮助我吗?
解决方法
我建议您对此进行测试,并检查是否确实有效。
您可以在测试Event :: fake()中使用它,然后使用功能shouldreceive()进行检查。
这是做事情的最好方法。