Frage Ist es möglich zu verhindern, dass Laravel Model Events ausführt, wenn die Datenbank seeded wird?


Laravels Sämaschine führt eine Vielzahl von Model Events auf meinen Modellen aus, die unter anderem New Order Emails auslösen Product::saved() Modell-Ereignis

Dies verlangsamt das Datenbank-Seeding erheblich. Ist es möglich zu erkennen, ob ein Seed läuft und wenn ja, sag Laravel, dass er die Model Events nicht ausführen soll?


12
2018-05-27 20:10


Ursprung


Antworten:


Es gibt Funktionen auf dem Model Klasse, mit der Sie Ereignisse ignorieren können.

Bevor Sie ein Modell zum Seeding verwenden, müssen Sie so etwas tun ...

YourModel::flushEventListeners();

21
2018-05-27 20:27



Ich empfehle, den Dispatcher in diesem Fall aus dem Eloquent Model zu entfernen.

Beispielsweise.

// Check Dispatcher
Model::getEventDispatcher()

// Remove Dispatcher
Model::unsetEventDispatcher()

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

13
2018-05-27 20:53