在 Laravel 上为用户 table 播种的参数不匹配
Parameter mismatch for seeding the users table on Laravel
我正在尝试在 Laravel 5.2 上为用户 table 播种。我有一个名为 role
的自定义列。我正在使用 Faker 为用户播种 table。但是,我需要用管理员或客户填充 role
列。所以,我传递了一个数组并返回了参数不匹配错误。
这是我正在尝试的相关代码:
$factory->define(App\User::class, function (Faker\Generator $faker) {
return [
'name' => $faker->name,
'email' => $faker->email,
'password' => 123456,
'role' => ['Administrator', 'Customer'],
'remember_token' => str_random(10),
];
})
我知道它只接受字符串而不是数组。那么,当你想用多个特定数据为数据库播种时,你该怎么做。
我建议使用随机索引生成(在您的情况下为 0 或 1)并通过该索引从可能值数组 (['Administrator', 'Customer']) 中检索值。
$i = rand(0, 1);
$roleOptions = ['Administrator', 'Customer'];
$role = $roleOptions[$i];
此外,如果您希望拥有比管理员更多的用户,您可以查找类似这样的内容:changing probability of getting a random number
您可以使用Faker
获取随机元素:
$factory->define(App\User::class, function (Faker\Generator $faker) {
return [
'name' => $faker->name,
'email' => $faker->email,
'password' => 123456,
'role' => $faker->randomElement(['Administrator', 'Customer']),
// ^^^^^^^ here ^^^^^^^
'remember_token' => str_random(10),
];
})
我正在尝试在 Laravel 5.2 上为用户 table 播种。我有一个名为 role
的自定义列。我正在使用 Faker 为用户播种 table。但是,我需要用管理员或客户填充 role
列。所以,我传递了一个数组并返回了参数不匹配错误。
这是我正在尝试的相关代码:
$factory->define(App\User::class, function (Faker\Generator $faker) {
return [
'name' => $faker->name,
'email' => $faker->email,
'password' => 123456,
'role' => ['Administrator', 'Customer'],
'remember_token' => str_random(10),
];
})
我知道它只接受字符串而不是数组。那么,当你想用多个特定数据为数据库播种时,你该怎么做。
我建议使用随机索引生成(在您的情况下为 0 或 1)并通过该索引从可能值数组 (['Administrator', 'Customer']) 中检索值。
$i = rand(0, 1);
$roleOptions = ['Administrator', 'Customer'];
$role = $roleOptions[$i];
此外,如果您希望拥有比管理员更多的用户,您可以查找类似这样的内容:changing probability of getting a random number
您可以使用Faker
获取随机元素:
$factory->define(App\User::class, function (Faker\Generator $faker) {
return [
'name' => $faker->name,
'email' => $faker->email,
'password' => 123456,
'role' => $faker->randomElement(['Administrator', 'Customer']),
// ^^^^^^^ here ^^^^^^^
'remember_token' => str_random(10),
];
})