Laravel 5使用Seeder & Faker创建假数据用于测试

Contents
说明
以前我们总是手动的填充假数据,例如在excel表用连接所要的列生成所有的SQL语句,扔到数据库里运行。
现在 Seeder & Faker 能很方便地为我们生成假数据。
所有的seeder文件在 database/seeds目录下。
Seeder
  • DatabaseSeeder.php

    这个文件只有run()方法,当执行 php artisan db:seed的时候会执行这个方法。
    如果要调用其它的Seeder, 需要手动增加代码, 例如:
    
    $this->call(AuthorTableSeeder::class);
    
  • 创建seeder文件

    php artisan make:seeder AuthorTableSeeder
    
  • seeder文件

    seeder文件只有一个方法: run()
    
  • 运行seeder

    php artisan db:seed
    php artisan db:seed --class=AuthorsTableSeeder
    
  • 重建所有表结构和填充假数据

    php artisan migrate:refresh --seed
    
Faker
  • github地址:

    https://github.com/fzaninotto/Faker
    
  • composer安装

    composer require fzaninotto/faker	
    
    或者 vim composer.json
    "require": {
    	"fzaninotto/faker": "dev-master"
    },
    
    composer self-update
    composer update
    
  • 编写seeder

    生成中文姓名, 中文的地址
    
    
    public function run()
    {
    	DB::table('authors')->truncate();
    
    	$faker = Faker\Factory::create('zh_CN');
    	$faker->addProvider(new Faker\Provider\zh_CN\Address($faker));
    
        for ($i=0; $i<100; $i++) {
    
        	DB::table('authors')->insert([
            	'username' => $faker->name,
            	'address' => $faker->address,
        	]);
    	}
    }	
    

#####执行seed

php artisan db:seed
0%