laravel使用Faker数据填充的方法介绍(代码)

发布时间 - 2019-04-12 00:00:00    点击率:

本篇文章给大家带来的内容是关于laravel使用Faker数据填充的方法介绍(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

导语:做开发的时候,添加测试数据是必不可少的,laravel 内置了很方便的数据填充,下面是实例。

数据迁移

先创建数据模型和数据迁移 php artisan make:model models/fakeruser -m

只创建几个简单字段,编辑 database/migrations/{now_date}_create_faker_users_table.php 文件

/**
     * Run the migrations.
     *
     * @return void
     */7
    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 之后数据表创建完成。

数据填充

创建数据填充文件 php artisan make:seeder FakerUsersSeeder

创建完成后,我们可以在 run() 方法中手动添加几条测试数据。但是好的办法,是使用模型工厂,接下来把注意力转移到模型工厂中;

创建模型工厂 php artisan make:factory FakerUsersFactory

在模型工厂中,可以通过 Faker\Generator 来生成测试数据,编辑 database/factories/FakerUsersFactory.php

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 的作用。它可以生成的数据类型有很多,更多的类型可以看下官方文档,虽然是英文的,不过都有示例,简单易懂;

Faker 生成的数据默认是英文,可以在 config/app.php 中将 faker_locale 设置为 zh_CN

模型工厂写好了,接下来就是调用。目光回到数据填充文件 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() 方法中将生成的模型实例入库保存。

最后就是执行数据填充,composer dump-autoload 之后 php artisan db:seed --class=FakerUsersSeeder

测试

好了,看下数据库的数据是否生成正确。看下总数

总数没有问题,随机看十条数据

数据也是正确的


# laravel  # php  # composer  # 数据类型  # class  # database  # 数据库  # 好了  # 英文  # 测试数据  # 几个  # 都有  # 有很多  # 对你  # 有一定  # 我们可以  # 可以通过 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 详解MySQL数据库的安装与密码配置  如何快速搭建高效服务器建站系统?  如何用腾讯建站主机快速创建免费网站?  Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优  Laravel如何保护应用免受CSRF攻击?(原理和示例)  Python3.6正式版新特性预览  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  Laravel如何使用Livewire构建动态组件?(入门代码)  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  JavaScript如何实现继承_有哪些常用方法  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  晋江文学城电脑版官网 晋江文学城网页版直接进入  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)  Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】  如何基于云服务器快速搭建个人网站?  Laravel如何实现一对一模型关联?(Eloquent示例)  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体  宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法  Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层  Laravel如何创建自定义中间件?(Middleware代码示例)  网易LOFTER官网链接 老福特网页版登录地址  南京网站制作费用,南京远驱官方网站?  如何基于云服务器快速搭建网站及云盘系统?  非常酷的网站设计制作软件,酷培ai教育官方网站?  如何快速搭建高效可靠的建站解决方案?  如何用西部建站助手快速创建专业网站?  Laravel如何创建自定义Artisan命令?(代码示例)  IOS倒计时设置UIButton标题title的抖动问题  打造顶配客厅影院,这份100寸电视推荐名单请查收  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  C语言设计一个闪闪的圣诞树  uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址  Win11怎么设置默认图片查看器_Windows11照片应用关联设置  谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复  公司网站制作价格怎么算,公司办个官网需要多少钱?  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  制作公司内部网站有哪些,内网如何建网站?  网页设计与网站制作内容,怎样注册网站?  标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南  Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  Laravel如何创建和注册中间件_Laravel中间件编写与应用流程  如何自定义建站之星网站的导航菜单样式?  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?