求助 observer 的 updated 内再次 save 导致死循环
1. 系统环境
CentOS + PHP8.2 + MySQL8.0
2.代码框架
wenman框架使用的 illuminate/database 11.33
3.问题
在observer
的updated
方法内在此掉用save
方法会导致死循环,如下代码:
class Device
{
public function updated($device) {
if ($device->isDirty('balance') && $device->balance < 0) {
$device->state = -1;
$device->save()
}
}
}
执行save
后再次触发的updated
后$device->isDirty('balance')
依然为真,这种情况是否有解决方案?
我当前的解决方案是在查一下这条数据在save
在if中复制一份然后同步一下,这样既不干扰其他changed事件触发,也能保证当前括号内业务继续触发changed事件