@prozrost

Как сделать seeding в связанную таблицу?

Хочу(для тренировки,первое приложение) Сделать типа турнирной таблицы различных команд,должны быть команды и матчи между ними. Хочу понять,как сделать сидинг в матчи,сидинг в команды уже сделан вот так:
<?php
/** @var \Illuminate\Database\Eloquent\Factory $factory */
$factory->define(App\Team::class, function (Faker\Generator $faker) {
    $team_example = ['Dinamo','Schacter','Zorya','Stal','Vorskla','Olimpik','Mariupol','Zvezda','Karpaty','Chernomorets','Veres'];
    return [
        'name' => $faker->unique()->randomElement($team_example),
        'score' => $faker->numberBetween($min = 1, $max = 15)
    ];
});

Это фабрика и вот сама функция run:
public function run()
    {
        factory(App\Team::class,11)->create();
    }

По моим(наверное не самым лучшим) предположениям в таблице матч должно быть два внешних ключа(команда1 и команда2) и связаны они должны быть Многие-ко-Многим
Реализовал я это вот так:
public function up()
    {
        Schema::create('matches', function (Blueprint $table) {
            $table->increments('id');
            $table->unsignedInteger('first_team_id');
            $table->unsignedInteger('second_team_id');
            $table->foreign('first_team_id')->references('id')->on('team');
            $table->foreign('second_team_id')->references('id')->on('team');
            $table->date('match_date');
        });
    }

И еще в модели Team:
public function matches()
    {
       return $this->belongsToMany('App\Match');
    }

Вопроса два, правильно ли я построил структуру и как делать сидинг в таблицу matches?
  • Вопрос задан
  • 338 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Kostik_1993
Web Developer
Нужно юзать фактори
factory(App\Category::class, 10)->create()->each(function ($c) {
		    factory(App\Product::class, 25)->create()->each(function ($p) use ($c){
		    	$p->categories()->attach($c);
                factory(App\Photo::class, rand(1, 3))->create()->each(function ($f) use ($p){
                    $f->product_id = $p->id;
                    $f->save();
                });
		    });
		});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы