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求小于1000的所有水仙花数的代码
Jan 10 PHP
php 判断网页是否是utf8编码的方法
Jun 06 PHP
php使用Jpgraph绘制柱形图的方法
Jun 10 PHP
php中preg_match的isU代表什么意思
Oct 01 PHP
Yii2 rbac权限控制之rule教程详解
Jun 23 PHP
PHP搭建大文件切割分块上传功能示例
Jan 04 PHP
php readfile下载大文件失败的解决方法
May 22 PHP
PHP网站自动化配置的实现方法(必看)
May 27 PHP
php操作mongodb封装类与用法实例
Sep 01 PHP
PHP结合Redis+MySQL实现冷热数据交换应用案例详解
Jul 09 PHP
Yii框架页面渲染操作实例详解
Jul 19 PHP
Thinkphp5.0框架使用模型Model的获取器、修改器、软删除数据操作示例
Oct 11 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设计模式之中介者模式分析【星际争霸游戏案例】
2020/03/23 PHP
jQuery toggle()设置CSS样式
2009/11/05 Javascript
Tab页界面 用jQuery及Ajax技术实现(php后台)
2011/10/12 Javascript
js实现多选项切换导航菜单的方法
2015/02/06 Javascript
解析javascript中鼠标滚轮事件
2015/05/26 Javascript
BootStrap glyphicons 字体图标实现方法
2016/05/01 Javascript
Javascript中的对象和原型(二)
2016/08/12 Javascript
AngularJS入门教程之更多模板详解
2016/08/19 Javascript
基于Taro的微信小程序模板消息-获取formId功能模块封装实践
2019/07/15 Javascript
解决vue项目 build之后资源文件找不到的问题
2020/09/12 Javascript
JavaScript ES 模块的使用
2020/11/12 Javascript
python网络编程学习笔记(九):数据库客户端 DB-API
2014/06/09 Python
总结python爬虫抓站的实用技巧
2016/08/09 Python
Python使用wxPython实现计算器
2018/01/30 Python
python购物车程序简单代码
2018/04/18 Python
python多行字符串拼接使用小括号的方法
2020/03/19 Python
selenium + python 获取table数据的示例讲解
2018/10/13 Python
python 制作自定义包并安装到系统目录的方法
2018/10/27 Python
Python遍历文件夹 处理json文件的方法
2019/01/22 Python
PyQt5 QTable插入图片并动态更新的实例
2019/06/18 Python
基于Python实现签到脚本过程解析
2019/10/25 Python
Python numpy线性代数用法实例解析
2019/11/15 Python
python实现从尾到头打印单链表操作示例
2020/02/22 Python
解决django 向mysql中写入中文字符出错的问题
2020/05/18 Python
keras训练曲线,混淆矩阵,CNN层输出可视化实例
2020/06/15 Python
Html5+CSS3+EL表达式问题小结
2020/12/19 HTML / CSS
Gweniss格温妮丝女包官网:英国纯手工制造潮流包包品牌
2018/02/07 全球购物
毕业生的求职信范文分享
2013/12/04 职场文书
大学生自荐信
2013/12/11 职场文书
毕业生的自我评价
2013/12/30 职场文书
商务考察邀请函范文
2014/01/21 职场文书
物业保安岗位职责
2014/07/02 职场文书
天鹅湖观后感
2015/06/09 职场文书
2016年“11.11”光棍节活动总结
2016/04/05 职场文书
java版 联机五子棋游戏
2022/05/04 Java/Android
httpclient调用远程接口的方法
2022/08/14 Java/Android