innoflash / steroid-seeder
一个用于加速Laravel中数据种子的Laravel包。
v1.1.1
2020-06-27 14:05 UTC
Requires
- php: ^7.1
- illuminate/database: ^6.0|^7.0
- illuminate/support: ^6.0|^7.0
Requires (Dev)
- nunomaduro/collision: ^4.2
- orchestra/testbench: ^5.0
- phpunit/phpunit: ^9.0
This package is auto-updated.
Last update: 2024-09-27 23:57:25 UTC
README
此包旨在减少在开发中将大量数据种子到数据库时所需的时间。
安装
您可以通过composer安装此包
composer require innoflash/steroid-seeder --dev
用法
与默认Laravel factory
使用方式相同
如果您想在现有的种子文件中使用它,只需将
factory
替换为steroidFactory
或者您也可以从外观调用工厂。
SteroidSeeder::factory
默认的factory
一次只种子一个模型,这会延长大数据集的执行时间。
// with default factory (approx 37 seconds on my computer) factory(TestModel::class, 1000)->create();
//with steroidFactory (approx 8 seconds on my machine) steroidFactory(\App\TestModel::class, 1000)->create();
Steroid种子优化。
- 默认情况下,
steroidFactory
一次保存1000条记录,您不能调整这个大小以适应您的需要。
// took 8.8 seconds to seed 10k entries steroidFactory(\App\TestModel::class, 100000) ->chunk(1000) ->create();
- 默认情况下,Laravel工厂在创建模型后调用一些回调。这是模型启动和观察者被调用的时候,因为它会遍历所有创建的模型,所以很耗时。steroidFactory允许您忽略这些回调。
// took 4.3 seconds to seed 10k entries steroidFactory(\App\TestModel::class, 100000) ->skipAfterCreatingCallbacks() ->create();
种子关系
Steroid种子可以用于创建具有关系的模型。
它是在上面的基础上继续的,只是您需要将关系链在工厂上。请看下面的示例
steroidFactory(TestModel::class) ->with(Comment::class) ->with(Reaction::class, 1, [], 'model_id') ->create();
以下是with
函数期望的参数。
测试
composer test
变更日志
有关最近更改的更多信息,请参阅CHANGELOG。
贡献
有关详细信息,请参阅CONTRIBUTING。
安全
如果您发现任何与安全相关的问题,请通过电子邮件innocentmazando@gmail.com联系,而不是使用问题跟踪器。
致谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。
Laravel包模板
此包是使用Laravel包模板生成的。