填充器保存于 Laravel项目根目录 > database > seeds

参考文档:[ Laravel 5.6 文档 ] 数据库操作 —— 数据填充

创建填充器

要创建填充器,可以使用 artisan 命令提供的 make:seeder 方法

  • 填充器名称的约定写法: 大写表名+TableSeeder
  • 填充器的默认保存目录为database > seeds, 因此可以不区分目录 ``php // 会在database/seeds目录中创建填充器PaperTableSeeder` php artisan make:seeder PaperTableSeeder

// 创建成功反馈参考信息 Seeder created successfully.

  1. 创建的填充器代码如下:
  2. ```php
  3. <?php
  4. use Illuminate\Database\Seeder;
  5. class PaperTableSeeder extends Seeder
  6. {
  7. /**
  8. * Run the database seeds.
  9. *
  10. * @return void
  11. */
  12. public function run()
  13. {
  14. // 在该方法中完成数据的插入
  15. }
  16. }

执行填充器

要执行填充器,可以使用 artisan 命令提供的 db:seed 方法

// 填充PaperTableSeeder的run()方法, 执行数据插入
php artisan db:seed --class=PaperTableSeeder

// 无执行成功的反馈信息
  • 执行种子文件的时候需要指定要执行的种子文件名, 不需要后缀

PaperTableSeeder文件的run()方法实现如下

public function run()
{
    // 模拟数据
    $data = [
        [
            'paper_name' => 'iOS进阶',
            'start_time' => strtotime('+7 days'),
            'duration' => '120',
        ],
        [
        'paper_name' => 'PHP进阶',
        'start_time' => strtotime('+7 days'),
        'duration' => '120',
        ]
    ];

    // 建议使用DB来写入新数据, 不需要引入DB即可直接使用
    DB::table('paper') -> insert($data);
}

生成伪装数据

使用 fzaninotto/faker 库来生成伪装数据。Laravel自带该库,不需要独立安装

// 创建Faker实例
$faker = Faker\Factory::create();

// faker默认返回 en_US 的数据格式, 因此要使用中文的本地化配置 zh_CN
$faker = Faker\Factory::create("zh_CN");

$data = [
    'username'      =>  $faker->userName,   // 生成用户名
    'password'      =>  bcrypt('123456'),   // 使用Laravel框架内置的bcrypt方法加密密码
    'gender'        =>  rand(1, 3),     // 随机性别
    'mobile'        =>  $faker->phoneNumber,
    'email'         =>  $faker->email,
    'role_id'       =>  rand(1, 6),     // 角色id
    'created_at'    =>  date('Y-m-d H:i:s', time()),    // 创建时间
    'status'        =>  rand(1, 2),     // 帐号状态
];