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 setcookie() cannot modify header information 的解决方法
Jan 09 PHP
色色整理的PHP面试题集锦
Mar 08 PHP
PHP判断浏览器、判断语言代码分享
Mar 05 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
Mar 21 PHP
PHP简单日历实现方法
Jul 20 PHP
visual studio code 调试php方法(图文详解)
Sep 15 PHP
thinkPHP框架自动填充原理与用法分析
Apr 03 PHP
thinkphp5引入公共部分header、footer的方法详解
Sep 14 PHP
PHP如何搭建百度Ueditor富文本编辑器
Sep 21 PHP
PHP的PDO大对象(LOBs)
Jan 27 PHP
Laravel多域名下字段验证的方法
Apr 04 PHP
在laravel中实现ORM模型使用第二个数据库设置
Oct 24 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
ADODB类使用
2006/11/25 PHP
PHP面向对象概念
2011/11/06 PHP
PHP获取QQ达人QQ信息的方法
2015/03/05 PHP
php实现微信公众号主动推送消息
2015/12/31 PHP
利用PHP绘图函数实现简单验证码功能的方法
2016/10/18 PHP
用PHP的反射实现委托模式的讲解
2019/03/22 PHP
laravel框架的安装与路由实例分析
2019/10/11 PHP
js 数组实现一个类似ruby的迭代器
2009/10/27 Javascript
用js实现的模拟jquery的animate自定义动画(2.5K)
2010/07/20 Javascript
jquery实现倒计时代码分享
2014/06/13 Javascript
jQuery实现菜单式图片滑动切换
2015/03/14 Javascript
jQuery插件实现带圆点的焦点图片轮播切换
2016/01/18 Javascript
js实现把图片的绝对路径转为base64字符串、blob对象再上传
2016/12/29 Javascript
纯JS实现轮播图
2017/02/22 Javascript
vue.js的computed,filter,get,set的用法及区别详解
2018/03/08 Javascript
bootstrap中日历范围选择插件daterangepicker的使用详解
2018/04/17 Javascript
详解vue服务端渲染浏览器端缓存(keep-alive)
2018/10/12 Javascript
JavaScript RegExp 对象用法详解
2019/09/24 Javascript
微信小程序停止其他视频播放当前视频的实例代码
2019/12/25 Javascript
在webstorm中配置less的方法详解
2020/09/25 Javascript
python简单实现基于SSL的IRC bot实例
2015/06/15 Python
python win32 简单操作方法
2017/05/25 Python
python机器学习之KNN分类算法
2018/08/29 Python
用python求一个数组的和与平均值的实现方法
2019/06/29 Python
django基于cors解决跨域请求问题详解
2019/08/06 Python
django 多数据库及分库实现方式
2020/04/01 Python
python装饰器三种装饰模式的简单分析
2020/09/04 Python
医学护理毕业生自荐信
2013/11/07 职场文书
学生会主席事迹材料
2014/01/28 职场文书
仓库管理员岗位职责
2014/03/19 职场文书
工程承包协议书
2014/04/22 职场文书
2015年学校体育工作总结
2015/04/22 职场文书
课改心得体会范文
2016/01/25 职场文书
哪类餐饮行业,最适合在高校创业?
2019/08/19 职场文书
基于CSS3画一个iPhone
2021/04/21 HTML / CSS
python垃圾回收机制原理分析
2022/04/13 Python