【问题标题】:Parameter mismatch for seeding the users table on Laravel在 Laravel 上播种用户表的参数不匹配
【发布时间】:2016-01-26 18:59:43
【问题描述】:

我正在尝试在 Laravel 5.2 上播种 users 表。我有一个名为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),
    ];
})

我知道它只接受字符串而不是数组。那么,当您想使用多个特定数据为数据库播种时,您如何做到这一点。

【问题讨论】:

    标签: php arrays laravel-5.2


    【解决方案1】:

    您可以使用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),
        ];
    })
    

    【讨论】:

    • 谢谢,伙计。不知道随机元素有Faker 方法:)
    【解决方案2】:

    我建议使用随机索引生成(在您的情况下为 0 或 1)并通过此索引从可能值数组(['Administrator','Customer'])中检索值。

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

    此外,如果您希望拥有比管理员多得多的用户,您可以查找以下内容:changing probability of getting a random number

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-08
      • 1970-01-01
      • 2020-05-23
      • 2016-02-13
      • 2014-09-05
      • 2020-02-27
      • 1970-01-01
      相关资源
      最近更新 更多