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 相关文章推荐
十天学会php之第八天
Oct 09 PHP
php中的三元运算符使用说明
Jul 03 PHP
PHP 数据结构 算法描述 冒泡排序 bubble sort
Jul 10 PHP
PHP中设置时区方法小结
Jun 03 PHP
谨慎使用PHP的引用原因分析
Sep 06 PHP
php中使用$_REQUEST需要注意的一个问题
May 02 PHP
Yii中CGridView关联表搜索排序方法实例详解
Dec 03 PHP
PHP输入输出流学习笔记
May 12 PHP
PHP中strpos、strstr和stripos、stristr函数分析
Jun 11 PHP
PHP实现负载均衡session共享redis缓存操作示例
Aug 22 PHP
php框架CI(codeigniter)自动加载与自主创建对象操作实例分析
Jun 06 PHP
PHP基本语法
Mar 31 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
WordPress中制作导航菜单的PHP核心方法讲解
2015/12/11 PHP
Yii2选项卡的简单使用
2017/05/26 PHP
getJSON调用后台json数据时函数被调用两次的原因猜想
2013/09/29 Javascript
JavaScript中合并数组的N种方法
2014/09/16 Javascript
js获取当前时间显示在页面上并每秒刷新
2014/12/24 Javascript
AngularJS快速入门
2015/04/02 Javascript
微信小程序  生命周期详解
2016/10/27 Javascript
Javascript 实现匿名递归的实例代码
2017/05/25 Javascript
Web技术实现移动监测的介绍
2017/09/18 Javascript
原生javascript实现文件异步上传的实例讲解
2017/10/26 Javascript
vue中v-cloak解决刷新或者加载出现闪烁问题(显示变量)
2018/04/20 Javascript
详解使用create-react-app快速构建React开发环境
2018/05/16 Javascript
Vue.js中使用iView日期选择器并设置开始时间结束时间校验功能
2018/08/12 Javascript
详解如何构建Promise队列实现异步函数顺序执行
2018/10/23 Javascript
如何去除富文本中的html标签及vue、react、微信小程序中的过滤器
2018/11/21 Javascript
JavaScript+HTML5 canvas实现放大镜效果完整示例
2019/05/15 Javascript
js实现点击上传图片并设为模糊背景
2020/08/02 Javascript
Python常见异常分类与处理方法
2017/06/04 Python
用virtualenv建立多个Python独立虚拟开发环境
2017/07/06 Python
python验证码识别的示例代码
2017/09/21 Python
Python3爬虫学习之应对网站反爬虫机制的方法分析
2018/12/12 Python
Django框架实现分页显示内容的方法详解
2019/05/10 Python
django框架model orM使用字典作为参数,保存数据的方法分析
2019/06/24 Python
python操作docx写入内容,并控制文本的字体颜色
2020/02/13 Python
Python定时器线程池原理详解
2020/02/26 Python
加拿大休闲和工业服装和鞋类零售商:L’Équipeur
2018/01/12 全球购物
澳洲的UGG雪地靴超级市场:Uggs.com.au
2020/04/06 全球购物
编程输出如下图形
2013/11/24 面试题
消防安全检查制度
2014/02/04 职场文书
2014年转正工作总结
2014/11/08 职场文书
计算机考试作弊检讨书1000字
2015/01/01 职场文书
物业工程部岗位职责
2015/02/11 职场文书
刑事附带民事起诉状
2015/05/19 职场文书
财产分割协议书
2016/03/22 职场文书
springcloud之Feign超时问题的解决
2021/06/24 Java/Android
win11高清晰音频管理器在哪里?win11找不到高清晰音频管理器解决办法
2022/04/08 数码科技