设置Factories的生成字段
创建伪造数据
网站PHP框架之Laravel系列文章
接着网站PHP框架之Laravel5.5(十二)使用Seeder方式向数据库填充数据的项目进行进一步的开发,我们在此项目中的users表中添加了身份字段role,Laravel默认给了我们一个UserFactory:/database/factories/UserFactory.php
define(App\User::class, function (Faker $faker) {
static $password;
return [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
'password' => $password ?: $password = bcrypt('secret'),
'remember_token' => str_random(10),
];
});
调用了工厂($factory)的定义函数(define),定义了一个User类传入了一个可以伪造数据的$faker实例,在具体的函数中定义了表里面的字段:
添加role字段数据生成器:
define(App\User::class, function (Faker $faker) {
static $password;
return [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
//邮箱是唯一性的所以调用unique方法下的safeEmail
'password' => $password ?: $password = bcrypt('secret'),
'remember_token' => str_random(10),
'role' => array_random(['admin','member','guest'])
//定义了三个身份随机
];
});
调用Laravel项目提供好的工具tinker容器
php artisan tinker
Psy Shell v0.9.9 (PHP 7.3.6 — cli) by Justin Hileman //进入到Psy Shell
指定命名空间App后获取当前所有用户(为了表示Pay Shell的IDE环境,在每行代码前添加了>>>,后面才是输入的代码)
>>> namespace App;
>>> $users = User::all();
返回了一个Collection(数据集合)的数据:
=> Illuminate\Database\Eloquent\Collection {#2902
all: [
App\User {#2903
id: 1,
name: "admin",
role: "admin",
email: "[email protected]",
created_at: null,
updated_at: null,
},
],
}
调用factory指定类和待造的数据条数进行create创建:
>>> factory(User::class,300)->create()
返回了一系列类似这样的数据:
App\User {#3225
name: "Dolly Kling",
email: "[email protected]",
role: "member",
updated_at: "2019-07-12 19:59:48",
created_at: "2019-07-12 19:59:48",
id: 301,
},
查看数据库管理软件查看users表:
伪造数据成功!
补充一点,用完Psy shell记得退出:
>>> exit;
注意: