2015-05-27 3 views
8

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

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

ответ

13

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

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

YourModel::flushEventListeners(); 
+0

Это отлично подойдет для меня. – tptcat

+0

Кажется, что это не работает с пользовательскими событиями. Другое решение: '' ' // Удалить грузоотправитель Model :: unsetEventDispatcher() ' '' Кажется работать в этом случае. –

10

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

Например.

// Check Dispatcher 
Model::getEventDispatcher() 

// Remove Dispatcher 
Model::unsetEventDispatcher() 

// Add Dispatcher 
Model::setEventDispatcher(new \Illuminate\Events\Dispatcher); 
Смежные вопросы