Посеять несколько конкретных данных на Laravel

Я хочу заполнить таблицу базы данных с помощью local, s3 и rackspace с помощью сеялки базы данных в Laravel. Однако, если я использую эти три конкретных имени с методом $faker->randomElement(), он просто заполняет одно и то же имя несколько раз, и это то, что мне не нужно. Если возможно, я также хочу установить другое значение для другого столбца, используя имя хранилища s3 или rackspace.

$factory->define(App\Storage::class, function (\Faker\Generator $faker) {
    return [
        'storage' => $faker->randomElement(['s3', 'local', 'rackspace']),
        's3-key' => null,
        's3-secret' => null,
        's3-region' => null,
        's3-bucket' => null,
        'rackspace-username' => null,
        'rackspace-key' => null,
        'rackspace-container' => null,
        'status' => 'active'
    ];
})

Каков наилучший способ добиться этого?


person Md Mazedul Islam Khan    schedule 07.02.2016    source источник
comment
попробуйте это и посмотрите, будет ли у вас такой же результат: $faker-›randomElements(['s3', 'local', 'rackspace'],1)[0]   -  person Yehia Awad    schedule 07.02.2016
comment
Это помогло. Однако не понял, как это работает. Кроме того, что было бы, если я хочу установить s3-key или другой параметр специально для s3 или rackspace.   -  person Md Mazedul Islam Khan    schedule 07.02.2016


Ответы (1)


В Faker/Provider/Baser.class есть ошибка, она использует эту строку кода внутри функции randomElement, которая повторяет один и тот же случайный элемент снова и снова для одного и того же экземпляра из-за того, что он использует ключевое слово static::.

static::randomElements($array, 1);

Я сообщу об этом, пока используйте этот фрагмент кода:

$faker->randomElements(['s3', 'local', 'rackspace'],1)[0]
person Yehia Awad    schedule 07.02.2016