innoflash/steroid-seeder

一个用于加速Laravel中数据种子的Laravel包。

v1.1.1 2020-06-27 14:05 UTC

This package is auto-updated.

Last update: 2024-09-27 23:57:25 UTC


README

Latest Version on Packagist Build Status Quality Score Total Downloads

此包旨在减少在开发中将大量数据种子到数据库时所需的时间。

安装

您可以通过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包模板生成的。