Слушатель Laravel 5.7 с обновлением Eloquent - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть 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', прерывание!

Похоже,Код зациклен, потому что мой слушатель также делает обновление.Тем не менее, он работает и также сохраняется.

Как я могу решить эту проблему лучше (без исключения)?

введите описание изображения здесь

1 Ответ

0 голосов
/ 13 февраля 2019

Вы создали бесконечный цикл.Когда вы сохраняете модель, она запускает ImageSaved, который запускает событие UpdateSearchValues.

Однако в UpdateSearchValues вы снова обновляете модель и, следовательно, снова запускаете событие и запускаетеслушатель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...