Jac*_*ack 19 php laravel laravel-5 laravel-seeding
Laravel的播种机在我的模型上运行各种模型事件,从Product::saved()
模型事件中触发新订单通知电子邮件等.
这显着减慢了数据库播种速度.是否可以检测种子是否正在运行,如果是,请告诉Laravel不要运行模型事件?
use*_*496 28
Model
类上有一些函数可以让你忽略事件.
在使用模型种子之前,你需要做这样的事情......
YourModel::flushEventListeners();
Run Code Online (Sandbox Code Playgroud)
小智 21
我建议从Eloquent模型中删除此案例中的Dispatcher.
例如.
// Check Dispatcher
Model::getEventDispatcher()
// Remove Dispatcher
Model::unsetEventDispatcher()
// Add Dispatcher
Model::setEventDispatcher(new \Illuminate\Events\Dispatcher);
Run Code Online (Sandbox Code Playgroud)
将特质添加WithoutModelEvents
到您的播种机
namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
use WithoutModelEvents;
public function run(): void
{
// Silent eloquent queries ...
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6707 次 |
最近记录: |