我有一个 ImageSaved 事件:
namespace App\Events;
class ImageSaved
{
public $image;
public function __construct(\App\Image $image)
{
$this->image = $image;
}
}
和 UpdateSearchValues 侦听器:
class UpdateSearchValues
{
public function handle(ImageSaved $event)
{
$event->image->search = 'Test 2';
$event->image->save();
}
}
如果我现在保存一个条目,例如
$image = Image::find(1);
$image->search = 'Test 1';
$image->save();
我收到此异常错误:
达到最大功能嵌套级别'1000',正在中止!
代码看起来像是循环的,因为我的听众也在做更新。但是,它可以运行并且也可以保存。
如何更好地解决此问题(无例外)?
答案 0 :(得分:1)
您已经创建了一个无限循环。保存模型时,它将触发运行ImageSaved
事件的UpdateSearchValues
。
但是,在UpdateSearchValues
中,您将再次更新模型,因此它将再次触发事件并运行侦听器。