当数据库被种子化时,是否可以阻止Laravel运行模型事件?

时间:2015-05-27 20:10:15

标签: php laravel laravel-5 laravel-seeding

Laravel的播种机在我的模型上运行各种模型事件,从Product::saved()模型事件中触发新订单通知电子邮件。

这显着减慢了数据库播种速度。是否可以检测种子是否正在运行,如果是,请告诉Laravel不要运行模型事件?

2 个答案:

答案 0 :(得分:27)

Model类上有一些函数可以让你忽略事件。

在使用模型播种之前,您需要做这样的事情......

YourModel::flushEventListeners();

答案 1 :(得分:20)

我建议从Eloquent Model中删除此案例中的Dispatcher。

例如。

// Check Dispatcher
Model::getEventDispatcher()

// Remove Dispatcher
Model::unsetEventDispatcher()

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