codingphase/seeder

为Laravel应用程序提供易于使用的数据库种子工具。

v1.0.11 2019-12-17 19:17 UTC

This package is not auto-updated.

Last update: 2024-09-18 18:48:02 UTC


README

为Laravel应用程序提供易于使用的数据库种子工具

安装

步骤 1: 通过Composer安装

composer require codingphase/seeder

步骤 2: 注册服务提供者

将您的新提供者添加到 config/app.php 文件的 providers 数组中

  'providers' => [
      // ...
      CodingPhase\Seeder\SeederServiceProvider::class,
      // ...
  ],

发布配置

php artisan vendor:publish  --provider="CodingPhase\Seeder\SeederServiceProvider"

使用方法

使用ModelSeeder扩展种子器

use CodingPhase\Seeder\ModelSeeder;

class UsersTableSeeder extends ModelSeeder
{
    ...
}

实现run方法

/**
 * Run the database seeds.
 *
 * @return void
 */
public function run
{
    //Example
    $users = $this->seedModel(\App\User::class, function ($user) {
        $user->save();
    });
}

##API

setAmount(int)

默认种子资源的数量存储在配置中。如果您想种子其他数量的资源,可以设置。

$this->setAmount(30)->seedModel(\App\User::class, function ($user) {
    $user->save();
});

setHeader(string)

在输出进度条之前定义标题(默认为模型命名空间)

$this->setHeader("Awesome Users")->seedModel(\App\User::class, function ($user) {
    $user->save();
});

setCompact(bool)

默认为true。定义进度条的风格。

$this->setAmount(30)->seedModel(\App\User::class, function ($user) {
    $user->save();
});

useData(array)

设置用于填充资源的数据。它覆盖了模型工厂数据。

$data = [    
    1 => [
        'name' => 'test',
        'email' => 'test@test.com'
    ],    
    25 => [
        'name' => 'example'
        'email' => 'example@example.com',
    ],
];

$this->useData($data)->seedModel(\App\User::class, function ($user) {
    $user->save();
});
  • 第一个用户将具有名称 test 和电子邮件 test@test.com
  • 第25个用户将具有名称 example 和电子邮件 example@example.com

##实际示例

use CodingPhase\Seeder\ModelSeeder;

class UsersTableSeeder extends ModelSeeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run
    {
        $adminsData = [
            1 => [
                'name' => 'test',
                'email' => 'test@test.com',
                'password' => bcrypt('123456')
            ],
            4 => [
                'name' => 'test4',
                'email' => 'test4@test.com',
                'password' => bcrypt('654321')
            ],
        ];
        
        $admins = $this->useData($adminsData)
            ->setAmount(5)
            ->setHeader("Seeding Admins")
            ->setCompact(false)
            ->seedModel(\App\User::class, function ($user) {
                $user->admin = 1;
                $user->save();
            });
        
        $users = $this->setHeader("Seeding Regular Users")
            ->seedModel(\App\User::class, function ($user) {
                $user->save();
            });
    }
}