在 Laravel 上播种用户表的参数不匹配


Parameter mismatch for seeding the users table on Laravel

我正在尝试在Laravel 5.2上播种用户表。我有一个名为 role 的自定义列。我正在使用Faker来播种用户表。但是,我需要使用管理员或客户填充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),
    ];
})

我知道它只接受字符串而不是数组。那么,当您想用多个特定数据为数据库设定种子时,您该怎么做。

您可以使用

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),
    ];
})

我建议使用随机索引生成(在您的情况下为 0 或 1)并通过此索引从可能值数组(["管理员"、"客户"])中检索值。

$i = rand(0, 1);
$roleOptions = ['Administrator', 'Customer'];
$role = $roleOptions[$i];

此外,如果您希望拥有比管理员多得多的用户,则可以查找以下内容: 更改获得随机数的概率

相关文章: