使用 Laravel 数据填充功能生成中文测试数据
来源:互联网 发布:网络机顶盒检测 编辑:程序博客网 时间:2024/05/16 07:32
今晚……不对,是昨晚,折腾一个的小项目,发现自动填充的中文数据显示起来总不太美观,于是开始琢磨如何填充中文数据进行测试。
然而一番搜索后惊奇的发现,官方、以及一些非官方的文档均未提及这一功能。期间看到一篇他人的“经验”文章,虽然可以实现这一需求,却要求修改 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 数据填充生成 中文 测试数据
- laravel使用faker填充数据
- Laravel使用Seeder自动填充数据
- laravel (四) laravel 数据填充
- 使用数据工厂模式生成测试数据
- Laravel数据快速填充
- laravel 数据填充
- Laravel 的实用功能之一 数据库填充 使用数据工场
- 使用Sql生成测试数据
- laravel数据迁移和填充
- Laravel 5.2 教程 - 数据填充
- laravel 使用测试工厂Factory添加测试数据
- 用已有数据生成随机测试数据
- 使用 SQL 生成大量测试数据
- 使用PowerDesigner生成数据库测试数据
- mysql使用循环生成测试数据
- 使用sql语句生成测试数据
- 保证service不被杀死
- 关于java反射(一)
- 如何制作PLC信号接口技术文件
- Android Studio 字体大小更改及样式更换
- centos7 安装opencv2.4.13
- 使用 Laravel 数据填充功能生成中文测试数据
- linux shell如何判断文件/文件夹是否存在
- [LeetCode]Remove Invalid Parentheses
- C++中几个关键字的解析
- 文章标题
- 引导滤波Guided Filter
- svn使用详解
- OpenSSL和Python实现RSA Key公钥加密私钥解密
- vue.js中的子组件与父组件,prop传递数据