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 session 检测和注销
Mar 16 PHP
PHPMYADMIN导入数据最大为2M的解决方法
Apr 23 PHP
php preg_replace替换实例讲解
Nov 04 PHP
smarty简单分页的实现方法
Oct 27 PHP
php常用数学函数汇总
Nov 21 PHP
深入解析PHP的Yii框架中的event事件机制
Mar 17 PHP
PHP程序中的文件锁、互斥锁、读写锁使用技巧解析
Mar 21 PHP
Centos PHP 扩展Xchche的安装教程
Jul 09 PHP
Yii核心验证器api详解
Nov 23 PHP
PHP实现判断数组是一维、二维或几维的方法
Feb 06 PHP
php mysql PDO 查询操作的实例详解
Sep 23 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
根德Grundig S400/S500/S700电路分析
2021/03/02 无线电
编译php 5.2.14+fpm+memcached(具体操作详解)
2013/06/18 PHP
PHP判断是否有Get参数的方法
2014/05/05 PHP
PHP中isset与array_key_exists的区别实例分析
2015/06/02 PHP
CentOS7编译安装php7.1的教程详解
2019/04/18 PHP
laravel框架中视图的基本使用方法分析
2019/11/23 PHP
JavaScript入门教程 Cookies
2009/01/31 Javascript
ExtJs 表单提交登陆实现代码
2010/08/19 Javascript
利用jquery的获取JS文件中的字符串内容
2012/02/14 Javascript
JS实现字体选色板实例代码
2013/11/20 Javascript
javascript获取浏览器类型和版本的方法(js获取浏览器版本)
2014/03/13 Javascript
angular.element方法汇总
2015/01/07 Javascript
JavaScript生成二维码图片小结
2015/12/27 Javascript
JS实现图片旋转动画效果封装与使用示例
2018/07/09 Javascript
jquery.pagination.js分页使用教程
2018/10/23 jQuery
vue data恢复初始化数据的实现方法
2019/10/31 Javascript
Javascript Worker子线程代码实例
2020/02/20 Javascript
jQuery实现飞机大战小游戏
2020/07/05 jQuery
vue修改Element的el-table样式的4种方法
2020/09/17 Javascript
Python自动生产表情包
2017/03/17 Python
python django使用haystack:全文检索的框架(实例讲解)
2017/09/27 Python
PyQt5每天必学之进度条效果
2018/04/19 Python
PyQt5每天必学之关闭窗口
2018/04/19 Python
python实现词法分析器
2019/01/31 Python
Python3.5实现的三级菜单功能示例
2019/03/25 Python
纯CSS3实现滚动的齿轮动画效果
2014/06/05 HTML / CSS
canvas仿写贝塞尔曲线的示例代码
2017/12/29 HTML / CSS
南非最受欢迎的时尚品牌:MRP
2016/09/18 全球购物
校园文化建设方案
2014/02/03 职场文书
《卖木雕的少年》教学反思
2014/04/11 职场文书
农行心得体会
2014/09/02 职场文书
领导班子对照检查材料
2014/09/22 职场文书
我们的节日重阳节活动总结
2015/03/24 职场文书
环境卫生标语
2015/08/03 职场文书
2016年感恩节寄语
2015/12/07 职场文书
mysql sock 文件解析及作用讲解
2022/07/15 MySQL