Генерируете сезонные матчи с помощью Laravel?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Генерируете сезонные матчи с помощью Laravel?

Сообщение Anonymous »

Я написал команду для создания рекорда сезона вместе с матчами между командами.
Она отлично работает, но, похоже, не учитывает, если у команды уже есть матч.
Это означает, что команда 1 может сыграть с командой 3, но команда 4 также может сыграть с командой 1, то есть у команды 1 есть два матча в первый день?
Как это исправить и избежать совпадений совпадений?
class GenerateSeasonCommand extends Command
{
protected $signature = 'generate:season';
protected $description = 'Command description';

public function handle(): void
{
$season = Season::query()->create([
'name' => $this->ask('What is the name of the season?'),
]);

$seasonGameData = [];
$teams = Team::all();

foreach ($teams as $team) {
$matchDay = 0;
foreach (Team::query()->whereNot('id', $team->id)->get() as $otherTeam) {
$matchDay++;
$seasonGameData[] = [
'season_id' => $season->id,
'home_team_id' => $team->id,
'away_team_id' => $otherTeam->id,
'game_mode_id' => $this->getRandomGameModeId(),
'map_id' => Map::query()->orderByRaw('RAND()')->first()->id,
'match_day' => $matchDay,
'created_at' => now()
];
}
}

SeasonGame::query()->insert($seasonGameData);
}

private function getRandomGameModeId() : int
{
return mt_rand(1, 4) >= 4 ?
mt_rand(1, 4) :
mt_rand(1, 3);
}
}


Подробнее здесь: https://stackoverflow.com/questions/790 ... th-laravel
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»