Можно ли предотвратить запуск Laravel Model Events во время заполнения базы данных?

Сеялка Laravel запускает на моделях множество событий модели, которые, помимо прочего, вызывают электронные письма с уведомлением о новом заказе из Product::saved() Модельное событие.

Это значительно замедляет заполнение базы данных. Можно ли определить, запускается ли Семя, и если да, сказать Laravel не запускать События модели?

15

Решение

Есть функции на Model класс, который позволит вам игнорировать события.

Прежде чем использовать модель для посева, вам нужно сделать что-то вроде этого …

YourModel::flushEventListeners();
25

Другие решения

Я рекомендую удалить Диспетчер в этом случае из Eloquent Model.

Например.

// Check Dispatcher
Model::getEventDispatcher()

// Remove Dispatcher
Model::unsetEventDispatcher()

// Add Dispatcher
Model::setEventDispatcher(new \Illuminate\Events\Dispatcher);
17

По вопросам рекламы [email protected]