我有一个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',中止!
看起来代码是循环的,因为我的监听器也在进行更新。但是,它运行并保存。
我怎样才能更好地解决这个问题(没有例外)?
你创造了一个无限循环。当您保存模型时,它会触发运行ImageSaved
事件的UpdateSearchValues
。
但是在UpdateSearchValues
中,您再次更新模型,因此它再次触发事件并运行侦听器。