使用 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 是 - ...
随机推荐
- 导入google地图
一直报地图页面的 java.lang.incompatibleclasschangeerror 想来想去,应该是包不兼容的原因,原本以为,在 build.gradle 里面 compileSdkVer ...
- linux系统输入法设置
首先是要安装了中文输入法,下面以搜狗为例. 2 从system settings 进入language support ,在keyboard input method system 中是看不到自己安装 ...
- js里面声明变量时候的注意事项
变量名可以是中文,只能有下划线,$,数字和字母组成,开头只能以下划线(不建议使用)和字母开头.
- php学习四:数组(一)
1. 直接赋值方式: ① 索引数组:以索引来存储数据,内存不是连续的,但是js中的内存是连续的 代码如下: $array[0] = "11"; $array[1] = &qu ...
- 《C++ Primer Plus》第13章 类继承 笔记
类继承通过使用已有的类(基类)定义新的来(派生类),使得能够根据需要修改编程代码.共有继承建立is-a关系,这意味着派生类对象也应该是某种基类对象.作为is-a模型的一部分,派生类继承基类的数据称源和 ...
- HTTP/2笔记之流和多路复用
零.前言 本部分将讲解HTTP/2协议中对流的定义和使用,其实就是在说HTTP/2是若何做到多路复用的. 一.流和多路复用的关系 1. 流的概念 流(Stream),服务器和客户端在HTTP/2连接内 ...
- C# 判断远程文件是否存在
/// <summary> /// 判断远程文件是否存在 /// </summary> /// <param name="url">url地址& ...
- Codeforces 603E Pastoral Oddities
传送门:http://codeforces.com/problemset/problem/603/E [题目大意] 给出$n$个点,$m$个操作,每个操作加入一条$(u, v)$长度为$l$的边. 对 ...
- http://blog.csdn.net/ym19860303/article/details/8462450
http://www.himigame.com/iphone-cocos2d/444.html 很多游戏中,便于开发就会直接采用Cocos2d提供的字体库来使用,但是因为提供的种类很多,那么Himi利 ...
- mysql 远程连接超时解决办法
设置mysql远程连接root权限 在远程连接mysql的时候应该都碰到过,root用户无法远程连接mysql,只可以本地连,对外拒绝连接. 需要建立一个允许远程登录的数据库帐户,这样才可以进行在远程 ...
