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的宝库目录--PEAR
Oct 09 PHP
ajax在joomla中的原生态应用代码
Jul 19 PHP
PHP中file_exists与is_file,is_dir的区别介绍
Sep 12 PHP
php获取用户IPv4或IPv6地址的代码
Nov 15 PHP
PHP学习笔记之字符串编码的转换和判断
May 22 PHP
PHP中加密解密函数与DES加密解密实例
Oct 17 PHP
php实现遍历目录并删除指定文件中指定内容
Jan 21 PHP
PHP中读取文件的几个方法总结(推荐)
Jun 03 PHP
Yii CFileCache 获取不到值的原因分析
Feb 08 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
Feb 06 PHP
PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)实例详解
Apr 20 PHP
php常用日期时间函数实例小结
Jul 04 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写的采集程序
2007/03/16 PHP
PHP获取用户的浏览器与操作系统信息的代码
2012/09/04 PHP
领悟php接口中interface存在的意义
2013/06/27 PHP
PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享
2014/09/27 PHP
仿dedecms下拉分页样式修改的thinkphp分页类实例
2014/10/30 PHP
php获取文件名称和扩展名的方法
2017/02/07 PHP
javascript 拖动表格行实现代码
2011/05/05 Javascript
javascript 进阶篇1 正则表达式,cookie管理,userData
2012/03/14 Javascript
分析Node.js connect ECONNREFUSED错误
2013/04/09 Javascript
js切换光标示例代码
2013/10/10 Javascript
简单的jquery左侧导航栏和页面选中效果
2014/08/21 Javascript
jQuery中extend函数详解
2015/02/13 Javascript
JS+CSS实现下拉列表框美化效果(3款)
2015/08/15 Javascript
js实现向右横向滑出的二级菜单效果
2015/08/27 Javascript
IE8兼容Jquery.validate.js的问题
2016/12/01 Javascript
浅谈jQuery before和insertBefore的区别
2016/12/04 Javascript
简单实现JS倒计时效果
2016/12/23 Javascript
Vue2.0基于vue-cli+webpack父子组件通信(实例讲解)
2017/09/14 Javascript
详解Vue webapp项目通过HBulider打包原生APP(vue+webpack+HBulider)
2019/02/02 Javascript
Node.JS枚举统计当前文件夹和子目录下所有代码文件行数
2019/08/23 Javascript
vue分页插件的使用方法
2019/12/25 Javascript
[52:41]OG vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/20 DOTA
Python max内置函数详细介绍
2016/11/17 Python
python学习教程之使用py2exe打包
2017/09/24 Python
python生成1行四列全2矩阵的方法
2018/08/04 Python
Python matplotlib生成图片背景透明的示例代码
2019/08/30 Python
python GUI库图形界面开发之PyQt5打印控件QPrinter详细使用方法与实例
2020/02/28 Python
Keras中的两种模型:Sequential和Model用法
2020/06/27 Python
python实现不同数据库间数据同步功能
2021/02/25 Python
Ratchet 模态框的实现
2020/08/19 HTML / CSS
乔丹诺(Giordano)酒庄德国官网:找到最好的意大利葡萄酒
2017/12/28 全球购物
幼儿园教师培训制度
2014/01/16 职场文书
执行总经理岗位职责
2014/02/03 职场文书
教师年终个人总结
2015/02/11 职场文书
公务员学习中国梦心得体会
2016/01/05 职场文书
python​格式化字符串
2022/04/20 Python