是否可以在对数据库进行种子设定时阻止 Laravel 运行模型事件?

2022-08-30 15:57:05

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

这会显著降低数据库种子设定的速度。是否有可能检测种子是否正在运行,如果是,请告诉Laravel不要运行模型事件?


答案 1

该类上有一些函数,允许您忽略事件。Model

在使用模型进行种子之前,您需要执行类似如下操作...

YourModel::flushEventListeners();

答案 2

我建议在这种情况下从雄辩模型中删除调度程序。

例如。

// Check Dispatcher
Model::getEventDispatcher()

// Remove Dispatcher
Model::unsetEventDispatcher()

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

推荐