使用 Laravel 数据填充功能生成中文测试数据
今晚……不对,是昨晚,折腾一个的小项目,发现自动填充的中文数据显示起来总不太美观,于是开始琢磨如何填充中文数据进行测试。
然而一番搜索后惊奇的发现,官方、以及一些非官方的文档均未提及这一功能。期间看到一篇他人的“经验”文章,虽然可以实现这一需求,却要求修改 vendor 目录下 fzaninotto/Faker 包的源码,对于一个中了 Laravel 的“优雅之毒”的人来说,怎能容忍如此风骚的操作?
一定有更好的办法……
继续理清 Laravel 模型工厂原理之后,终于有所进展。发现其实只需要一个小小的修改就可以实现这一功能。
根据官方示例的模型工厂代码
$factory->define(App\Product::class, function (Faker\Generator $faker) {
return [
'user_id' => 1,
'name' => $faker->name,
'mobile' => $faker->phoneNumber,
'province' => $faker->state,
'city' => $faker->city,
'area' => $faker->area,
'address' => $faker->streetAddress,
'postcode' => $faker->postcode,
];
});
调整后的代码
$factory->define(App\Address::class, function () {
$faker = Faker\Factory::create('zh_CN');
return [
'user_id' => 1,
'name' => $faker->name,
'mobile' => $faker->phoneNumber,
'province' => $faker->state,
'city' => $faker->city,
'area' => $faker->area,
'address' => $faker->streetAddress,
'postcode' => $faker->postcode,
];
});
调整前,使用依赖注入的 Faker\Generator
是使用的默认语言,即英文。
调整后, Faker\Factory::create('zh_CN')
也会返回一个 Faker\Generator
, 但它是使用汉语初始化的。
事实上 Faker 本地化对于中文的支持仍有部分待完善,使用暂时不支持生成随机中文句子或者段落(相应的方法返回的仍然会是英文的),但我相信不久之后会有大牛实现这一些功能。
最后,上图,实际生成数据效果如下:
请别纠结省市区从属关系,数据仅供测试而已
评论中大牛提醒后发现, Laravel5.4 及更新版本其实已经考虑了这一问题,并设置了相关的配置项 app.faker_locale
,只不过在文档和默认的配置文件中看不到这一参数。相关源码在 Illuminate\Database\DatabaseServiceProvider
类中,可以查看源码来判断是否支持这一配置项。对于支持的版本,只需要在 config\app.php
文件中加入 faker_locale => 'zh_CN'
就可以实现了
使用 Laravel 数据填充功能生成中文测试数据的更多相关文章
- 使用 Laravel 数据填充生成 中文 测试数据
Laravel5.4 及更新版本设置了相关的配置项 app.faker_locale,只不过在文档和默认的配置文件中看不到这一参数.相关源码在 Illuminate\Database\Database ...
- 使用faker 生成中文测试数据
https://github.com/fzaninotto/Faker/blob/master/src/Faker/Provider/zh_CN/Address.php 常用的类型都在里面. 下面是一 ...
- laravel 数据填充
编写填充器 php artisan make:seeder UserTableSeeder 修改Laravel安装时自带的DatabaseSeeder类,添加一个数据库插入语句到run方法: < ...
- laravel数据填充
post表有这2个字段 填充20条数据, 执行 php artisan tinker 执行预览 factory(App\Post::class,20)->make(); 插入数据库 factor ...
- Laravel 实践之路: 数据库迁移与数据填充
数据库迁移实际上就是对数据库库表的结构变化做版本控制,之前对数据库库表结构做修改的方式比较原始,比如说对某张库表新增了一个字段,都是直接在库表中执行alter table xxx add .. 的方式 ...
- 迷你MVVM框架 avalonjs 学习教程4、数据填充
MVVM是前端的究极解决方案,你们可能用过jQuery,但那个写的代码不易维护:你们可以听过说requirejs与seajs,传说中的模块开发,加载器,但它们的最终目标是打包:你们可能听过unders ...
- Laravel 5.2 教程 - 数据填充
一.简介 Laravel提供的填充类(seed),可以让大家很容易的实现填充测试数据到数据库.所有的填充类都位于database/seeds目录.填充类的类名完全由你自定义,但最好还是遵循一定的规则, ...
- Laravel 5.2 数据库迁移和数据填充
一.数据库迁移 Laravel 的数据库迁移提供了对数据库.表.字段.索引的一系列相关操作.下面以创建友情链接表为例. 1. 创建迁移 使用 Artisan 命令 php artisan make: ...
- laravel模型建立和数据迁移和数据填充(数据填充没有成功)未完
开始创建我们的第一个 Article 模型及其对应迁移文件了,我们在项目根目录运行如下 Artisan 命令一步到位: php artisan make:model Article -m -m 是 - ...
随机推荐
- PHP webservice 接口实例
原文地址,就不摘抄了 http://www.sky00.com/archives/91.html
- nutch 存储到数据库
就像我们知道的一样,nutch是一个架构在lucene之上的网络爬虫+搜索引擎. 是由lucene的作者在lucene基础之上开发,并整合了hadoop,实现在分布式云计算,使用google标准的HF ...
- 教你一招解决浏览器兼容问题(PostCSS的使用)
我们在处理网页的时候,往往会遇到兼容性的问题.在这个问题上分为两个大的方向:屏幕自适应&浏览器兼容.而屏幕自使用的方法有许多,包括框架之类的,但是浏览器的兼容却没有一个号的框架.在我们日常处理 ...
- LNMP redis 安装、PHPredis扩展配置、服务器自启动、redis认证密码
背景: LNMP 环境(centos7) 一. 安装redis 1.下载,解压,编译 $ cd /usr/local$ wget http://download.redis.io/releases/r ...
- OLE工具套件分析OFFICE宏恶意样本
零.绪论:OLE工具套件的介绍 OLE工具套件是一款针对OFFICE文档开发的具有强大分析功能一组工具集.这里主要介绍基于Python2.7的OLEtools的安装和使用. (1)Python版本需求 ...
- thinkphp --- 写入日志
在开发过程中,对于一些参数,不好直接输入或者打印调试,特别是在微信开发过程中,这个时候,通过日志来查看信息就显得格外重要. 下面是在TP3.2.3框架中,写入日志的方法: public functio ...
- django后台导入excel文件
1.django 如何从后台上传excel中批量解析数据 要从django后台导入的excel中批量解析数据,举一个例子,我们向后抬批量导入svn历史数据数据格式 假设excel表中有4列,每列分别是 ...
- 单机器启动多个tomcat的配置修改
首先去apache下载一个tomcat,下载解压版的,比较方便 把这个tomcat(我下载的是tomcat7版本),解压两次,为了方便显示,我把解压出来的tomcat重命名成tomcat71和to ...
- HOJ 2226&POJ2688 Cleaning Robot(BFS+TSP(状态压缩DP))
Cleaning Robot Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4264 Accepted: 1713 Descri ...
- debug error 错误日志的调试模式
https://docs.nginx.com/nginx/admin-guide/monitoring/logging/ error_log logs/error.log warn; In this ...