使用 Laravel 避免 Eloquent 模型事件被多次/无限次触发
Avoid Eloquent model event from being triggered multiple/ infinite times using Laravel
我有以下代码:
应用服务提供商:
User::saved(function (User $user) {
return $user->modifiedEvent();
});
User::deleted(function (User $user)
return $user->modifiedEvent();
});
在我的 User
模型中我有:
public function modifiedEvent()
{
$stage = $this->isDirty('terms_and_conditions')
&& $this->terms_and_conditions !== null ? 'completed' : 'incomplete';
$this->stage_terms_and_conditions = $stage;
return $this->save();
}
我遇到的问题是 modifiedEvent
也修改了模型,这意味着我们得到了一个无限循环!
确保此事件不会因事件本身而多次触发的最佳方法是什么。
我将尝试使用 'saving' 事件,因此不需要在最后调用 $this->save() 。
我有以下代码:
应用服务提供商:
User::saved(function (User $user) {
return $user->modifiedEvent();
});
User::deleted(function (User $user)
return $user->modifiedEvent();
});
在我的 User
模型中我有:
public function modifiedEvent()
{
$stage = $this->isDirty('terms_and_conditions')
&& $this->terms_and_conditions !== null ? 'completed' : 'incomplete';
$this->stage_terms_and_conditions = $stage;
return $this->save();
}
我遇到的问题是 modifiedEvent
也修改了模型,这意味着我们得到了一个无限循环!
确保此事件不会因事件本身而多次触发的最佳方法是什么。
我将尝试使用 'saving' 事件,因此不需要在最后调用 $this->save() 。