2016-01-26 1 views
0

Я пытаюсь разбить таблицу пользователей на Laravel 5.2. У меня есть специальный столбец с именем role. Я использую Faker для сортировки таблицы пользователей. Однако мне нужно заполнить столбец role либо Администратором, либо Заказчиком. Итак, я передал массив и возвратил ошибку несоответствия параметров.Несоответствие параметров для посева таблицы пользователей на Laravel

Вот соответствующий код, который я пытаюсь с:

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

Я знаю, что он только принимает строку вместо массива. Итак, как вы это делаете, когда хотите засеять базу данных несколькими конкретными данными.

ответ

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

Спасибо , чувак. Не знал, что существует метод «Faker» для случайного элемента :) –

1

Я предлагаю использовать генерацию случайных индексов (в вашем случае 0 или 1) и извлекать значение из массива возможных значений (['Administrator', 'Customer']) этим индексом.

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

Кроме того, если вы хотели бы иметь гораздо больше пользователей, чем администраторов, вы можете искать что-то вроде этого: changing probability of getting a random number

 Смежные вопросы

  • Нет связанных вопросов^_^