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 相关文章推荐
附件名前加网站名
Mar 23 PHP
一个php Mysql类 可以参考学习熟悉下
Jun 21 PHP
php 获取百度的热词数据的代码
Feb 18 PHP
一个漂亮的php验证码类(分享)
Aug 06 PHP
PHP验证码函数代码(简单实用)
Sep 29 PHP
php格式输出文件var_export函数实例
Nov 15 PHP
php中使用gd库实现远程图片下载实例
May 12 PHP
php轻量级的性能分析工具xhprof的安装使用
Aug 12 PHP
解决更换PHP5.4以上版本后Dedecms后台登录空白问题的方法
Oct 23 PHP
ThinkPHP3.2.3实现分页的方法详解
Jun 03 PHP
微信公众号模板消息群发php代码示例
Dec 29 PHP
基于PHP+mysql实现新闻发布系统的开发
Aug 06 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获取本周,上周,本月,上月,本季度日期的代码
2009/08/05 PHP
jquery $.each 和for怎么跳出循环终止本次循环
2013/09/27 Javascript
jQuery层级选择器用法分析
2015/02/10 Javascript
NodeJS的Promise的用法解析
2016/05/05 NodeJs
Three.js快速入门教程
2016/09/09 Javascript
JS变量中有var定义和无var定义的区别以及es6中let命令和const命令
2017/02/19 Javascript
JS去掉字符串前后空格或去掉所有空格的用法
2017/03/25 Javascript
Kindeditor单独调用单图上传增加预览功能的实例
2017/07/31 Javascript
详解react-native-fs插件的使用以及遇到的坑
2017/09/12 Javascript
JavaScript EventEmitter 背后的秘密 完整版
2018/03/29 Javascript
bootstrap 弹出框modal添加垂直方向滚轴效果
2018/07/09 Javascript
在layui下对元素进行事件绑定的实例
2019/09/06 Javascript
微信小程序之 catalog 切换实现解析
2019/09/12 Javascript
Vue项目页面跳转时浏览器窗口上方显示进度条功能
2020/03/26 Javascript
JavaScript数组排序功能简单实现
2020/05/14 Javascript
js实现移动端图片滑块验证功能
2020/09/29 Javascript
python删除列表中重复记录的方法
2015/04/28 Python
21行Python代码实现拼写检查器
2016/01/25 Python
python机器学习实战之树回归详解
2017/12/20 Python
Python中一些不为人知的基础技巧总结
2018/05/19 Python
基于OpenCV python3实现证件照换背景的方法
2019/03/22 Python
Python OS模块实例详解
2019/04/15 Python
详解python调用cmd命令三种方法
2019/07/08 Python
pygame实现成语填空游戏
2019/10/29 Python
Django中modelform组件实例用法总结
2020/02/10 Python
基于K.image_data_format() == 'channels_first' 的理解
2020/06/29 Python
Python Request类源码实现方法及原理解析
2020/08/17 Python
英国皇家邮政海外旗舰店:Royal Mail
2018/02/21 全球购物
2014年祖国生日寄语
2014/09/19 职场文书
党的群众路线个人对照检查材料
2014/09/23 职场文书
党员考试作弊检讨书1000字
2015/02/16 职场文书
2015国庆节66周年演讲稿
2015/03/20 职场文书
小学英语教学随笔
2015/08/14 职场文书
2016年公共机构节能宣传周活动总结
2016/04/05 职场文书
Mac M1安装mnmp (Mac+Nginx+MySQL+PHP) 开发环境
2021/03/29 PHP
Nginx域名转发使用场景代码实例
2021/03/31 Servers