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 相关文章推荐
文件上传类
Oct 09 PHP
在IIS7.0下面配置PHP 5.3.2运行环境的方法
Apr 13 PHP
批量获取memcache值并按key的顺序返回的实现代码
Jun 14 PHP
php中替换字符串中的空格为逗号','的方法
Jun 09 PHP
php截取字符串函数分享
Feb 02 PHP
PHP获取文件行数的方法
Jun 10 PHP
ajax+php控制所有后台函数调用
Jul 15 PHP
PHP命令行执行整合pathinfo模拟定时任务实例
Aug 12 PHP
thinkPHP5.0框架开发规范简介
Mar 25 PHP
PHP两个n位的二进制整数相加问题的解决
Aug 26 PHP
Laravel validate error处理,ajax,json示例
Oct 25 PHP
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
Apr 01 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
mysql 字段类型说明
2007/04/27 PHP
php开启openssl的方法
2014/05/15 PHP
php生成百度sitemap站点地图类函数实例
2014/10/17 PHP
ThinkPHP设置禁止百度等搜索引擎转码(简单实用)
2016/02/15 PHP
php封装的数据库函数与用法示例【参考thinkPHP】
2016/11/08 PHP
thinkPHP统计排行与分页显示功能示例
2016/12/02 PHP
HR vs ForZe BO3 第一场 2.13
2021/03/10 DOTA
SlideView 图片滑动(扩展/收缩)展示效果
2010/08/01 Javascript
JS左右无缝滚动(一般方法+面向对象方法)
2012/08/17 Javascript
Jquery UI震动效果实现原理及步骤
2013/02/04 Javascript
解析window.open的使用方法总结
2013/06/19 Javascript
使用非html5实现js板连连看游戏示例代码
2013/09/22 Javascript
根据当前时间在jsp页面上显示上午或下午
2014/08/18 Javascript
基于jQuery实现拖拽图标到回收站并删除功能
2015/11/25 Javascript
canvas实现图像截取功能
2017/02/06 Javascript
JS运动特效之任意值添加运动的方法分析
2018/01/24 Javascript
vue中element组件样式修改无效的解决方法
2018/02/03 Javascript
如何去除富文本中的html标签及vue、react、微信小程序中的过滤器
2018/11/21 Javascript
Node.js原生api搭建web服务器的方法步骤
2019/02/15 Javascript
微信小程序实现类似微信点击语音播放效果
2020/03/30 Javascript
jquery弹窗时禁止body滚动条滚动的例子
2019/09/21 jQuery
纯js+css实现仿移动端淘宝网站的弹出详情框功能
2019/12/29 Javascript
[38:40]2018DOTA2亚洲邀请赛 4.6淘汰赛 mineski vs LGD 第一场
2018/04/10 DOTA
python os用法总结
2018/06/08 Python
Python函数参数操作详解
2018/08/03 Python
python爬取内容存入Excel实例
2019/02/20 Python
Python tkinter界面实现历史天气查询的示例代码
2020/08/23 Python
上级检查欢迎词
2014/01/18 职场文书
领导干部廉政承诺书
2014/03/27 职场文书
财务会计大学生自我评价
2014/04/09 职场文书
部门年终奖分配方案
2014/05/07 职场文书
单位工作证明书格式
2014/10/04 职场文书
2016幼儿园教师节新闻稿
2015/11/25 职场文书
股东出资协议书
2016/03/21 职场文书
二年级作文之动物作文
2019/11/13 职场文书
Python tensorflow卷积神经Inception V3网络结构
2022/05/06 Python