[Thinkphp5视频教程](https://v.58hualong.cn/)
## 通过本文你可以学到:
* Faker 的使用
## 当前问题
上一篇文章我们知道了如何使用 Seeder ,并知道了如何简单的使用 Seeder 填充数据,但是,你有没有发现,如果仅仅是上一篇内容所讲的使用方法,Seeder 显然是不够的,因为在实际项目开发中,我们需要的数据格式是丰富的,并不是简单的通过生成随机数来模拟真实数据就可以的,比如说我们要生成可以看得懂的用户呢称,IP地址,用户住址,假图片等我们可能需要的更多信息,如果这些信息要靠我们自己去编写规则显然也是非常麻烦的,所以呢,今天就给大家介绍一个PHP库:[fzaninotto/Faker](https://github.com/fzaninotto/Faker),这个库基本解决了上述描述的问题,非常的实用,看完这篇文章你就知道 Seeder + Faker 真是如虎添翼。
## 安装 Faker
在 Thinkphp5 中安装 Faker 非常的简单,在项目根目录下执行:
~~~
composer require fzaninotto/faker
~~~
安装成功之后我们就可以直接在 Seeder 中使用啦。
## Faker 的使用姿势
就拿上一节课中的 `Users` 表举例,该表结构如下:
| 字段 | 说明 |
| --- | --- |
| `nickname` | 呢称 |
| `email` | 邮箱 |
| `password` | 密码 |
使用 Faker 我们可以这样写:
~~~
<?php
use think\migration\Seeder;
class UserSeeder extends Seeder
{
/**
* Run Method.
*
* Write your database seeder using this method.
*
* More information on writing seeders is available here:
* http://docs.phinx.org/en/latest/seeding.html
*/
public function run()
{
$faker = Faker\Factory::create();
$rows = [];
for ($i = 0; $i < 100; $i++) {
$rows[] = [
'nickname' => $faker->name,
'email' => $faker->email,
'password' => md5('123456'),
];
}
$this->table('users')->insert($rows)->save();
}
}
~~~
执行 `php think seed:run` 之后,可以在数据库看到:
php think seed:run
生成的数据非常的人性化,测试的时候也就更加方便了,关键只需要写几行代码就解决复杂的问题,是不是很棒!
> Faker 的提供的方法非常的多,这里不做过多的阐述,感兴趣的小伙伴们可以去这里:[https://github.com/fzaninotto/Faker](https://github.com/fzaninotto/Faker) 查看它的使用教程。
## Faker 生成中文数据
Faker 默认生成的都是英文数据,因为作者是西方国家的嘛,但是 Faker 也提供了中文的一些数据的支持,如:
**中文姓名:**
~~~
$faker = new \Faker\Generator();
$faker->addProvider(new \Faker\Provider\zh_CN\Person($faker));
// 中文姓名
var_dump($faker->name);
~~~
**手机号:**
~~~
$faker = new \Faker\Generator();
$faker->addProvider(new \Faker\Provider\zh_CN\PhoneNumber($faker));
// 手机号
var_dump($faker->PhoneNumber);
~~~
**地址信息:**
~~~
$faker = new \Faker\Generator();
$faker->addProvider(new \Faker\Provider\zh_CN\Address($faker));
// 城市
var_dump($faker->city);
// 省
var_dump($faker->state);
// 省份简称
var_dump($faker->stateAbbr);
// 区域
var_dump($faker->area);
// 国家
var_dump($faker->country);
// 地址
var_dump($faker->address);
// 邮编
var_dump($faker->postcode);
~~~
**公司信息:**
~~~
$faker = new \Faker\Generator();
$faker->addProvider(new \Faker\Provider\zh_CN\Company($faker));
// 公司前缀
var_dump($faker->companyPrefix);
// 公司后缀
var_dump($faker->companySuffix);
// 公司名
var_dump($faker->companyPrefix . $faker->companySuffix);
~~~
**时间:**
~~~
$faker = new \Faker\Generator();
$faker->addProvider(new \Faker\Provider\zh_CN\DateTime($faker));
// 上午/下午
var_dump($faker->amPm);
// 星期
var_dump($faker->dayOfWeek);
// 月份
var_dump($faker->monthName);
~~~
好了今天的教程就到这里啦。此篇是小滕的《Thinkphp5入门系列课程》第十四课:Seeder(二)。
喜欢的给个订阅呗!
**由于作者水平有限,如有错误请欢迎指正。**
作者:小滕Tt
链接:https://www.jianshu.com/p/af5b95ac1ed5
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。