Laravel Nova: наблюдение за моделями и выполнение только запросов Nova

#laravel #observers #laravel-nova

#laravel #наблюдатели #laravel-nova

Вопрос:

В моем api есть конечная точка для массовых операций, которая позволяет создавать или добавлять множество моделей в одном запросе. Когда эти модели созданы, я отправляю задание на создание записи «аудита», которая ссылается на все модели, которые были созданы или обновлены.

Мне нужна такая же функциональность для запуска, когда кто-то создает или обновляет запись в Nova dashboard, но из-за вышесказанного я не могу просто создать model observer, иначе я получу дублирующиеся записи «аудита» при выполнении массовых запросов api.

Лучшее, что я могу сделать, это создать model observer, который может определить, обновляется ли наблюдаемая модель или создается специально с помощью nova. Как я мог настроить наблюдателя в модели для создания и обновления событий, которые будут выполняться только в том случае, если сохранение или обновление поступили из запроса / ресурса Nova?

Ответ №1:

Согласно документации Laravel Nova

Если вы хотите присоединить наблюдателя только во время HTTP-запросов, связанных с Nova, вы можете зарегистрировать наблюдателей в Nova::serving event listener в NovaServiceProvider вашего приложения. Этот прослушиватель будет выполняться только во время запросов Nova:

 /**
 * Bootstrap any application services.
 *
 * @return void
 */
 public function boot()
 {
     parent::boot();

     Nova::serving(function () {
         User::observe(UserObserver::class);
     });
 }