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 相关文章推荐
第1次亲密接触PHP5(1)
Oct 09 PHP
令PHP初学者头疼十四条问题大总结
Nov 12 PHP
PHP+SQL 注入攻击的技术实现以及预防办法
Dec 29 PHP
PHP开发者常犯的10个MySQL错误更正剖析
Jan 30 PHP
PHP重定向的3种方式
Mar 07 PHP
根据ip调用新浪api获取城市名并转成拼音
Mar 07 PHP
PHP判断是否有Get参数的方法
May 05 PHP
php去掉URL网址中带有PHPSESSID的配置方法
Jul 08 PHP
Symfony2使用Doctrine进行数据库查询方法实例总结
Mar 18 PHP
thinkphp框架下实现登录、注册、找回密码功能
Apr 06 PHP
Laravel5.7 数据库操作迁移的实现方法
Apr 12 PHP
Laravel 5.2 文档 数据库 ―― 起步介绍
Oct 21 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
多人战的战术与战略
2020/03/04 星际争霸
ThinkPHP之M方法实例详解
2014/06/20 PHP
thinkphp循环结构用法实例
2014/11/24 PHP
php实现根据IP地址获取其所在省市的方法
2015/04/30 PHP
php封装的数据库函数与用法示例【参考thinkPHP】
2016/11/08 PHP
ThinkPHP框架下微信支付功能总结踩坑笔记
2019/04/10 PHP
ajax 缓存 问题 requestheader
2010/08/01 Javascript
javascript ajax的5种状态介绍
2014/08/18 Javascript
Egret引擎开发指南之运行项目
2014/09/03 Javascript
浅谈JSON中stringify 函数、toJosn函数和parse函数
2015/01/26 Javascript
JavaScript实现函数返回多个值的方法
2015/06/09 Javascript
JS中的hasOwnProperty()和isPrototypeOf()属性实例详解
2016/08/11 Javascript
浅谈javascript中的 “ &amp;&amp; ” 和 “ || ”
2017/02/02 Javascript
vue实现图片滚动的示例代码(类似走马灯效果)
2018/03/03 Javascript
仿ElementUI实现一个Form表单的实现代码
2019/04/23 Javascript
Django中URL视图函数的一些高级概念介绍
2015/07/20 Python
Python多层嵌套list的递归处理方法(推荐)
2016/06/08 Python
详解Python自建logging模块
2018/01/29 Python
python的staticmethod与classmethod实现实例代码
2018/02/11 Python
python3学习笔记之多进程分布式小例子
2018/02/13 Python
Windows 8.1 64bit下搭建 Scrapy 0.22 环境
2018/11/18 Python
bluepy 一款python封装的BLE利器简单介绍
2019/06/25 Python
如何使用Python处理HDF格式数据及可视化问题
2020/06/24 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
2021/01/10 Python
美国新兴城市生活方式零售商:VILLA
2017/12/06 全球购物
Exoticca英国:以最优惠的价格提供豪华异国情调旅行
2018/10/18 全球购物
送给程序员的20个Java集合面试问题
2014/08/06 面试题
公司管理建议书范文
2014/03/12 职场文书
环保建议书作文
2014/03/12 职场文书
村党支部公开承诺书
2014/05/29 职场文书
融资合作协议书范本
2014/10/17 职场文书
2014年政风行风评议工作总结
2014/10/21 职场文书
2014年小学少先队工作总结
2014/12/18 职场文书
Golang二维数组的使用方式
2021/05/28 Golang
使用php的mail()函数实现发送邮件功能
2021/06/03 PHP
Golang的继承模拟实例
2021/06/30 Golang