Така че, аз създавам уебсайт с резултати за бокс, опитвам се да получа боксьори минали резултати, но се боря с отношенията ...
Например, боксьорът може да има много събития (битка) и да има 1 резултат (победа, равенство или загуба) и 1 противник. Опитвам се да покажа всички резултати на боксьорите с информация за противниците
И така, имам събитие със структурата (може да добавите идентификатор на връзка, ако е необходимо)
Schema::create("events", function (Blueprint $table) {
$table->increments("id");
$table->string("name");
$table->date("date");
$table->string("location");
$table->timestamps();
$table->softDeletes();
});
Имам маса с боксер
Schema::create("boxers", function (Blueprint $table) {
$table->increments("id");
$table->string("name");
$table->string("status");
$table->string("division");
$table->string("stance");
$table->date("dob");
$table->integer("height");
$table->string("nationality");
$table->string("residence");
$table->string("birthplace");
$table->timestamps();
$table->softDeletes();
});
и резултатите
Schema::create("results", function (Blueprint $table) {
$table->increments("id");
$table->integer("user_id");
$table->integer("event_id");
$table->string("result");
$table->timestamps();
$table->softDeletes();
});
Какво трябва да добавя и променя, за да накарам връзката да работи правилно?
Отговори:
0 за отговор № 1Събития обикновено hasMany
битки (много битки на карта), всяка битка hasMany
(двама) спортисти. Така че отношенията ви борба / спортист биха били много-много (бойците имат много битки през цялата си кариера). Ще създадете въртяща се таблица athletes_fights
което ще има fight_id
и athlete_id
колони. Освен това тази въртяща се таблица може да има a winner_id
и a draw
колона. Равенството може да бъде по подразбиране до 0, 1, ако двубоят е равен. Може и да има win_method
(може дори да създам друга таблица за това и да я направя win_method_id
), win_round
, win_time
.
Вижте раздела за взаимоотношенията в документите на Laravel, ако още не сте го направили.
Така че вашият модел ще бъде ..
Event
Fight
Athlete