laravel使用Faker数据填充的实现方法


Posted in PHP onApril 12, 2019

导语

做开发的时候,添加测试数据是必不可少的,laravel 内置了很方便的数据填充,下面是实例。

注意:laravel5框架中已经内置了faker组建,不用安装

数据迁移

先创建数据模型和数据迁移 php artisan make:model Models/FakerUser -m;

只创建几个简单字段,编辑 database/migrations/{now_date}_create_faker_users_table.php 文件

/**
 * Run the migrations.
 *
 * @return void
 */
 public function up()
 {
 Schema::create('faker_users', function (Blueprint $table) {
  $table->increments('id');
  $table->char('name', 20)->comment('姓名');
  $table->string('email', 50)->comment('邮箱');
  $table->tinyInteger('age')->comment('年龄');
  $table->char('city', 20)->comment('城市');
  $table->timestamps();
 });

 DB::statement("ALTER TABLE `faker_users` comment'测试用户表'"); // 表注释
 }

运行数据迁移 php artisan migrate 之后数据表创建完成。

数据填充

  1. 创建数据填充文件 php artisan make:seeder FakerUsersSeeder;
  2. 创建完成后,我们可以在 run() 方法中手动添加几条测试数据。但是好的办法,是使用模型工厂,接下来把注意力转移到模型工厂中;
  3. 创建模型工厂 php artisan make:factory FakerUsersFactory;
  4. 在模型工厂中,可以通过 Faker\Generator 来生成测试数据,编辑 database/factories/FakerUsersFactory.php
<?php

use Faker\Generator as Faker;

$factory->define(\App\Models\FakerUser::class, function (Faker $faker) {
 return [
 'name' => $faker->name,
 'email' => $faker->safeEmail,
 'age' => $faker->numberBetween(8, 80),// 数字在 8-80 之间随机
 'city' => $faker->city,
 'created_at' => $faker->dateTimeBetween('-3 year', '-1 year'),// 时间在 三年到一年 之间
 'updated_at' => $faker->dateTimeBetween('-1 year', '-5 month'),// 时间在 一年到五个月之间
 ];
});

由上述代码可以很直白的看出 Faker\Generator 的作用。它可以生成的数据类型有很多,更多的类型可以看下官方文档,虽然是英文的,不过都有示例,简单易懂;

  1. Faker 生成的数据默认是英文,可以在 config/app.php 中将 faker_locale 设置为 zh_CN;
  2. 模型工厂写好了,接下来就是调用。目光回到数据填充文件 database/seeds/FakerUsersSeeder.php,在 run() 方法中如下代码
/**
 * Run the database seeds.
 *
 * @return void
 */
 public function run()
 {
 factory(\App\Models\FakerUser::class)->times(1000)->make()->each(function ($model) {
  // 数据入库
  $model->save();
 });
 }

time() 是生成的次数,make() 方法是创建模型实例,在 each() 方法中将生成的模型实例入库保存。

  1. 最后就是执行数据填充,composer dump-autoload 之后 php artisan db:seed --class=FakerUsersSeeder

测试

好了,看下数据库的数据是否生成正确。看下总数

laravel使用Faker数据填充的实现方法

总数没有问题,随机看十条数据

laravel使用Faker数据填充的实现方法

数据也是正确的。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
第十一节--重载
Nov 16 PHP
PHP获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
Oct 11 PHP
基于php 随机数的深入理解
Jun 05 PHP
深入解析PHP中的(伪)多线程与多进程
Jul 01 PHP
php判断页面是否是微信打开的示例(微信打开网页)
Apr 25 PHP
如何实现php图片等比例缩放
Jul 28 PHP
php验证手机号码
Nov 11 PHP
PHP如何通过AJAX方式实现登录功能
Nov 23 PHP
PHP三种方式实现链式操作详解
Jan 21 PHP
php 一维数组的循环遍历实现代码
Apr 10 PHP
PHP设计模式之PHP迭代器模式讲解
Mar 22 PHP
Swoole源码中如何查询Websocket的连接问题详解
Aug 30 PHP
Laravel5.7 Eloquent ORM快速入门详解
Apr 12 #PHP
laravel 数据迁移与 Eloquent ORM的实现方法
Apr 12 #PHP
PHP中的Iterator迭代对象属性详解
Apr 12 #PHP
PHP中str_split()函数的用法讲解
Apr 11 #PHP
PHP远程连接oracle数据库操作实现方法图文详解
Apr 11 #PHP
ThinkPHP5.0框架使用build 自动生成模块操作示例
Apr 11 #PHP
PHP生成随机码的思路与方法实例探索
Apr 11 #PHP
You might like
十天学会php之第一天
2006/10/09 PHP
用PHP生成静态HTML速度快类库
2007/03/18 PHP
PHP fclose函数用法总结
2019/02/15 PHP
取得元素的左和上偏移量的方法
2014/09/17 Javascript
浅析JS原型继承与类的继承
2016/04/07 Javascript
Bootstrap中表单控件状态(验证状态)
2016/08/04 Javascript
折叠菜单及选择器的运用
2017/02/03 Javascript
Bootstrap模态窗口源码解析
2017/02/08 Javascript
详解Javascript中DOM的范围
2017/02/13 Javascript
解析Vue2.0双向绑定实现原理
2017/02/23 Javascript
微信小程序 在线支付功能的实现
2017/03/14 Javascript
javascript获取图片的top N主色值方法详解
2018/01/26 Javascript
VUEJS 2.0 子组件访问/调用父组件的实例
2018/02/10 Javascript
BootStrap modal实现拖拽功能
2018/12/01 Javascript
JavaScript实现五子棋游戏的方法详解
2019/07/08 Javascript
JS实现斐波那契数列的五种方式(小结)
2020/09/09 Javascript
Python中os和shutil模块实用方法集锦
2014/05/13 Python
详解Python中time()方法的使用的教程
2015/05/22 Python
以windows service方式运行Python程序的方法
2015/06/03 Python
python中pygame针对游戏窗口的显示方法实例分析(附源码)
2015/11/11 Python
python 性能提升的几种方法
2016/07/15 Python
理解Python中的绝对路径和相对路径
2017/08/30 Python
Django Admin实现三级联动的示例代码(省市区)
2018/06/22 Python
Python 支付整合开发包的实现
2019/01/23 Python
Python运行提示缺少模块问题解决方案
2020/04/02 Python
pycharm实现print输出保存到txt文件
2020/06/01 Python
Html5剪切板功能的实现代码
2018/06/29 HTML / CSS
HTML5 Video标签的属性、方法和事件汇总介绍
2015/04/24 HTML / CSS
英国独特礼物想法和个性化礼物网站:notonthehighstreet.com
2018/04/16 全球购物
台湾东南旅游社网站:东南旅游
2019/02/11 全球购物
英国花园、DIY、电器和家居用品商店:Robert Dyas
2019/03/18 全球购物
大专生工程监理求职信
2013/10/04 职场文书
小学生学习感言
2014/03/10 职场文书
创业计划书之儿童理发店
2019/09/27 职场文书
MySQL获取所有分类的前N条记录
2021/05/07 MySQL
微软团队与 NASA 科学家和惠普企业(HPE)的工程师合作
2022/04/21 数码科技