0 ? Competition::query()->whereKey($envId)->get() : Competition::query()->orderBy('id')->get(); if ($competitions->isEmpty()) { $this->command?->warn('No competition found, skip tracks seed.'); return; } foreach ($competitions as $competition) { CompetitionTrack::query() ->where('competition_id', $competition->id) ->whereIn('track_code', self::LEGACY_TRACK_CODES) ->update(['is_enabled' => false]); foreach (SignupFieldI18n::prototypeTracks() as $row) { $sheet = DefaultTrackScoringSheets::forTrackCode($row['track_code'], $row['title']); CompetitionTrack::query()->updateOrCreate( [ 'competition_id' => $competition->id, 'track_code' => $row['track_code'], ], [ 'title' => $row['title'], 'title_en' => SignupFieldI18n::trackTitlesEn()[$row['title']] ?? null, 'description' => $row['description'], 'description_en' => SignupFieldI18n::trackDescriptionsEn()[$row['title']] ?? null, 'sort' => $row['sort'], 'is_enabled' => true, 'scoring_sheet_json' => $sheet, ] ); } $this->command?->info( 'Synced '.count(SignupFieldI18n::prototypeTracks())." tracks for competition #{$competition->id}." ); } } }