@laravue
laravel

Как реализовать наблюдение за изменением полей модели если делают update?

Есть такая проблема. Нужно отслеживать все изменения в моделе. Хорошо работал Observer, но это перестало работать, когда начали обновлять модель пачками - ввели групповые обработки. Например, менеджер через админку выделила все несколько тысяч товаров определенного поставщика и запустила скрипт, который заполнит общее поле для них всех.
это будет команда
Items::where('president_id', $president_id)->update(['description => $description]);

Как в этом случае хитро зафиксировать изменения если Обзерверы не работают?
На ум приходит только Сериализовать данные выборки перед и после, а потом запустить очередь для сравнения и логирования.
  • Вопрос задан
  • 99 просмотров
Пригласить эксперта
Ответы на вопрос 2
@lavren
Есть же стандартный механизм событий подели....

eloquent#events

Обработчик в очередь, в нем проверяем изменилось ли поле, если изменилось то запускается обработчик если нет то игнорирует job.
Ответ написан
PulpiRZVK
@PulpiRZVK
Для массового update события не выбрасываются. Поэтому и Observer прекратил работать.

Значительно проще будут чем городить сериализацию заменить "массовый update в один запрос" на цикл, где ты будешь обновлять каждую модель по одной. После этого Observer опять будет работать как раньше.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы