[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
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權并注明出處。