本来是要来介绍 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

完结。

results matching ""

    No results matching ""