# 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` 会多出一百条记录:
![](https://box.kancloud.cn/fd9b95a01a7a03e23f4a9f9d09620ef2_2228x1102.png)
试着用任何一个新创建的用户登录试试。
登录地址是 `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 源码