当前位置: 首页 > 后端技术 > PHP

laravel在使用Faker数据填写

时间:2023-03-29 15:09:37 PHP

leads进行开发时,添加测试数据是必不可少的。Laravel内置了非常方便的数据填充。下面是一个例子。数据迁移首先创建数据模型和数据迁移phpartisanmake:modelModels/FakerUser-m;只创建几个简单的字段,编辑database/migrations/{now_date}_create_faker_users_table.php文件/***运行迁移。**@returnvoid*/publicfunctionup(){Schema::create('faker_users',function(Blueprint$table){$table->increments('id');$table->char('name',20)->comment('姓名');$table->string('email',50)->comment('email');$table->tinyInteger('age')->comment('age');$table->char('city',20)->comment('city');$table->timestamps();});DB::statement("ALTERTABLE`faker_users`comment'testusertable'");//表注释}运行数据迁移phpartisanmigrate后,数据表就创建好了。数据填充创建数据填充文件phpartisanmake:seederFakerUsersSeeder;创建完成后,我们可以在run()方法中手动添加几条测试数据。但是一个好的方法是使用模型工厂,然后将注意力转移到模型工厂;创建模型工厂phpartisanmake:factoryFakerUsersFactory;在模型工厂中,可以通过Faker\Generator生成测试数据,编辑database/factories/FakerUsersFactory.phpdefine(\App\Models\FakerUser::class,function(Faker$faker){return['name'=>$faker->name,'email'=>$faker->safeEmail,'age'=>$faker->numberBetween(8,80),//数字是randombetween8-80'city'=>$faker->city,'created_at'=>$faker->dateTimeBetween('-3year','-1year'),//时间在三年到一年之间'updated_at'=>$faker->dateTimeBetween('-1year','-5month'),//时间在一年到五个月之间];});Faker\Generator的功能从上面的代码可以很清楚的看出。它可以生成多种类型的数据。更多类型可以参考官方文档。虽然是英文,但是有例子,通俗易懂;Faker生成的数据默认是英文的,可以在config/app.php中设置faker_locale设置为zh_CN;模型工厂写好了,接下来就是调用了。回头看数据填充文件database/seeds/FakerUsersSeeder.php,在run()方法中,如下代码/***运行数据库seeds。**@returnvoid*/publicfunctionrun(){factory(\App\Models\FakerUser::class)->times(1000)->make()->each(function($model){//数据存储$模型->保存();});}time()生成的次数,make()方法是创建一个模型实例,生成的模型实例存放在库中的each()方法中。最后是进行数据填充。composerdump-autoload后,测试phpartisandb:seed--class=FakerUsersSeeder是否正确生成了数据库中的数据。看总数没有问题,随机看十条数据是正确的。参考资料:DataPopulation,LaravelDocumentation-DatabaseTesting,Faker。