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 相关文章推荐
第九节 绑定 [9]
Oct 09 PHP
php HtmlReplace输入过滤安全函数
Jul 03 PHP
基于Discuz security.inc.php代码的深入分析
Jun 03 PHP
深入解析php中的foreach问题
Jun 30 PHP
php jquery 多文件上传简单实例
Dec 23 PHP
php输出金字塔的2种实现方法
Dec 16 PHP
PHP实现抓取迅雷VIP账号的方法
Jul 30 PHP
PHP会话处理的10个函数
Aug 11 PHP
php判断是否为ajax请求的方法
Nov 29 PHP
PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
Jul 27 PHP
如何利用预加载优化Laravel Model查询详解
Aug 11 PHP
PHP实现浏览器中直接输出图片的方法示例
Mar 14 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
ThinkPHP有变量的where条件分页实例
2014/11/03 PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
2016/11/15 PHP
PHP实现基于状态的责任链审批模式详解
2019/05/31 PHP
基于jquery的表头固定的若干方法
2011/01/27 Javascript
js获取浏览器的可视区域尺寸的实现代码
2011/11/30 Javascript
JavaScript子窗口ModalDialog中操作父窗口对像
2012/12/11 Javascript
js实现点击获取验证码倒计时效果
2021/01/28 Javascript
js仿百度切换皮肤功能(html+css)
2016/07/10 Javascript
js绘制购物车抛物线动画
2020/11/18 Javascript
JavaScript实现类似拉勾网的鼠标移入移出效果
2016/10/27 Javascript
浅谈angularjs $http提交数据探索
2017/01/20 Javascript
JS验证不重复验证码
2017/02/10 Javascript
vue封装第三方插件并发布到npm的方法
2017/09/25 Javascript
解决微信小程序调用moveToLocation失效问题【超简单】
2019/04/12 Javascript
React组件对子组件children进行加强的方法
2019/06/23 Javascript
Python中内建函数的简单用法说明
2016/05/05 Python
JSONLINT:python的json数据验证库实例解析
2017/11/28 Python
django项目用higcharts统计最近七天文章点击量
2019/08/17 Python
python实现最大优先队列
2019/08/29 Python
Python银行系统实战源码
2019/10/25 Python
简单了解Pandas缺失值处理方法
2019/11/16 Python
PyQt5中向单元格添加控件的方法示例
2020/03/24 Python
Python中使用filter过滤列表的一个小技巧分享
2020/05/02 Python
html5标记文字_动力节点Java学院整理
2017/07/11 HTML / CSS
澳洲健康食品网上商店:Aussie Health Products
2018/06/15 全球购物
密封类可以有虚函数吗
2014/08/11 面试题
汽车检测与维修专业求职信
2013/10/30 职场文书
行政办公员自我评价分享
2013/12/14 职场文书
小学门卫岗位职责
2013/12/17 职场文书
给面试官的感谢信
2014/02/01 职场文书
机关节能减排实施方案
2014/03/17 职场文书
幼儿园小班教师寄语
2014/04/03 职场文书
群众路线对照检查材料
2014/09/22 职场文书
2014年销售部工作总结
2014/12/01 职场文书
校车司机安全责任书
2015/05/11 职场文书
学校学习型党组织建设心得体会
2019/06/21 职场文书