#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);
});
}