Сделать сеялку для конкретных значений - PullRequest
0 голосов
/ 24 января 2019

Я использую сеялку в Laravel.У меня есть таблица с именем nationalities, которая имеет два столбца: id и name. Я хочу заполнить более одной записи с определенными уникальными значениями (немецкий, французский и т. Д.).

NationalitySeeder.php

use Illuminate\Database\Seeder;
use App\Nationality;

class NationalitySeeder extends Seeder
{
    public function run()
    {
        $nation = Nationality::create([
            'name' => 'american'
        ]);
    }
}

DatabaseSeeder.php

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /** Seed the application's database **/

    public function run()
    {
        $this->call(NationalitySeeder::class);
    }
}

1 Ответ

0 голосов
/ 25 января 2019

Создайте заводской файл в database/factories с именем NationalityFactory.php содержащий следующий код:

use Faker\Generator as Faker;

$factory->define(App\Nationality::class, function (Faker $faker) {
    return [
        'name' => $faker->languageCode,
    ];
});

В NationalitySeeder.php введите следующий код

$nationalities = ['German', 'French', 'etc.'];

factory(App\Nationality::class, count($nationalities))
           ->create()
           ->each(function ($nationality, $key) use ($nationalities) {
                $nationality->name = $nationalities[$key];
            });

Это сделает национальности на основе того, сколько вы настроили в массиве, используя фабрики Laravel.

...