# 13. factories, faker and seeding
本來是要來介紹 view 中的 foreach 功能,這個功能需要很多數據,因為是循環嘛。
所以要先創建好多數據。
在開發環境中,我們經常需要創建一些用于測試的假數據。
如果你是一名 `ruby on rails` 開發者,可能用過下面這兩個 `gem`。
<https://github.com/stympy/faker>
<https://github.com/ffaker/ffaker>
它們就是用來創建假數據的。
比如說,你要創建一百條用戶數據,而每個用戶名或郵箱是不同的,這個時候,其實我們用隨機的字符串就好了,可是這個叫 `faker` 的東西,能讓我們的用戶名更接近于現實,可讀性更強。
在 `laravel`,默認就有這樣的功能,我們來介紹一下。
找到 `database/factories/ModelFactory.php` 文件,內容如下:
```
<?php
$factory->define(App\User::class, function (Faker\Generator $faker) {
static $password;
return [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
'password' => $password ?: $password = bcrypt('secret'),
'remember_token' => str_random(10),
];
});
```
代碼也不復雜,使用的是 `App\User::class` 這個 model,`$faker->name` 表示隨機的用戶名,其他的也比較好解釋,密碼都為 `secret`。
怎么引用這個 factory 呢?
找到 `database/seeds/DatabaseSeeder.php` 文件,修改如下:
```
<?php
// database/seeds/DatabaseSeeder.php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
public function run()
{
// 新增這一行
factory(App\User::class, 100)->create();
// $this->call(UsersTableSeeder::class);
}
}
```
怎么來執行這個 seed 呢?
在終端上輸入如下指令:
```
$ php artisan db:seed
```
執行完之后數據表 `users` 會多出一百條記錄:

試著用任何一個新創建的用戶登錄試試。
登錄地址是 `http://127.0.0.1:8000/login`,密碼是 `secret`。
完結。
- 0. 介紹
- 1. php 開發環境安裝
- 2. 跑 laravel 的 hello world
- 3. 第一個路由 UsersController
- 4. 在數據庫中創建一條數據
- 5. 簡單的用戶認證
- 6. 修改 User model
- 7. User model 的 getter 方法
- 8. view 的更多知識
- 9. 在 view 中共享變量
- 10. blade layout
- 11. 使用 @include 來整理 view
- 12. Blade if/else/unless/or
- 13. factories, faker and seeding
- 14. Blade foreach
- 15. 分頁
- 16. 用中間件來限制用戶必須登錄
- 17. Route group
- 18. CURD 實踐之改變用戶表結構
- 19. CURD 實踐之為新添加的屬性修改注冊功能
- 20. CURD 實踐之用 username 來代替 email 登錄
- 21. CURD 個人中心頁面
- VIM 的 laravel 插件
- VIM 中有效地查看 php 源碼