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 相关文章推荐
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
Mar 13 PHP
发款php蜘蛛统计插件只要有mysql就可用
Oct 12 PHP
采集邮箱的php代码(抓取网页中的邮箱地址)
Jul 17 PHP
PHP无法访问远程mysql的问题分析及解决
May 16 PHP
C# WinForm中实现快捷键自定义设置实例
Jan 23 PHP
php给图片加文字水印
Jul 31 PHP
php实现的Curl封装类Curl.class.php用法实例分析
Sep 25 PHP
浅谈PHP值mysql操作类
Jun 29 PHP
php中遍历二维数组并以表格的形式输出的方法
Jan 03 PHP
完美的php分页类
Oct 24 PHP
ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解
Apr 03 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
Feb 27 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脚本监控Nginx 502错误并自动重启php-fpm
2015/05/13 PHP
PHP开发实现快递查询功能详解
2019/04/08 PHP
laravel 去掉index.php伪静态的操作方法
2019/10/12 PHP
PHP文件打开关闭及读写操作示例解析
2020/08/06 PHP
Add a Formatted Table to a Word Document
2007/06/15 Javascript
JS去除字符串的空格增强版(可以去除中间的空格)
2009/08/26 Javascript
jquery 实现checkbox全选,反选,全不选等功能代码(奇数)
2012/10/24 Javascript
单击浏览器右上角的X关闭窗口弹出提示的小例子
2013/06/12 Javascript
js判断数据类型如判断是否为数组是否为字符串等等
2014/01/15 Javascript
JS表的模拟方法
2015/02/05 Javascript
AngularJS中的$watch(),$digest()和$apply()区分
2016/04/04 Javascript
原生js的RSA和AES加密解密算法
2016/10/08 Javascript
详解jQuery中的事件
2016/12/14 Javascript
vue和webpack项目构建过程常用的npm命令详解
2018/06/15 Javascript
微信小程序 数据缓存实现方法详解
2019/08/26 Javascript
vue按需加载实例详解
2019/09/06 Javascript
TypeScript 引用资源文件后提示找不到的异常处理技巧
2020/07/15 Javascript
python绘图库Matplotlib的安装
2014/07/03 Python
基于python中的TCP及UDP(详解)
2017/11/06 Python
Python实现随机生成手机号及正则验证手机号的方法
2018/04/25 Python
简单易懂Pytorch实战实例VGG深度网络
2019/08/27 Python
python定位xpath 节点位置的方法
2019/08/27 Python
Python 余弦相似度与皮尔逊相关系数 计算实例
2019/12/23 Python
python音频处理的示例详解
2020/12/23 Python
Opencv+Python识别PCB板图片的步骤
2021/01/07 Python
耐克巴西官方网站:Nike巴西
2016/08/14 全球购物
采购员的工作职责
2013/12/26 职场文书
安全协议书范本
2014/04/21 职场文书
超市创意活动方案
2014/08/15 职场文书
个人委托书怎么写
2014/09/17 职场文书
机关党总支领导班子整改方案
2014/09/20 职场文书
2014年感恩节活动策划方案
2014/10/06 职场文书
党支部对转正的意见
2015/06/02 职场文书
催款函怎么写
2015/06/24 职场文书
社区挂职锻炼个人工作总结
2015/10/23 职场文书
MySQL数据管理操作示例讲解
2022/12/24 MySQL