laravel 中通过faker 和 模型工厂 进行数据填充

数据库批量测试数据填充

Posted by 昆山吴彦祖 on 2019.03.26


1 创建一个模型工厂

php artisan make:factory UserFactory --model=User


2 编辑模型工厂(修改return)

define(App\User::class, function (Faker $faker) {
    return [
        'name' => $faker->name,
        'email' => $faker->unique()->safeEmail,
        'email_verified_at' => now(),
        'password' => '$2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm', // secret
        'remember_token' => Str::random(10),
    ];
});

faker参考资料


3 创建一个数据库填充器

​php artisan make:seeder UsersTableSeeder


4 编辑填充器run方法(使用模型工厂)

use Illuminate\Database\Seeder;

class UsersTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        //
        factory(App\User::class, 50)--->create();
    }
}


5 编辑 datebase/seeds/DateBaseSeeder.php (非必需,原因见下一条)

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        $this--->call(UsersTableSeeder::class);
    }
}


6 运行数据库填充器

#composer dump-autoload
#php artisan db:seed
//db:seed 命令运行 DatabaseSeeder
//或者
#php artisan db:seed --class=UsersTableSeeder


数据填充