Expand IGDB data: collections, game modes, themes, perspectives, videos, websites, age ratings, similar games; add backfill command

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Mark
2026-06-01 00:24:05 +03:00
co-authored by Claude Sonnet 4.6
parent 0eab3e8dbf
commit 2a724c0ae2
21 changed files with 768 additions and 57 deletions
+11 -3
View File
@@ -47,7 +47,11 @@ class GameController extends Controller
public function show(Game $game)
{
$game->load(['genres', 'platforms', 'companies', 'screenshots', 'reviews.user']);
$game->load([
'genres', 'platforms', 'companies', 'screenshots', 'reviews.user',
'collection', 'gameModes', 'themes', 'playerPerspectives', 'videos', 'websites',
'similarGames' => fn($q) => $q->published()->with(['genres'])->limit(6),
]);
$userGame = null;
$userReview = null;
@@ -64,8 +68,10 @@ class GameController extends Controller
->limit(20)
->get();
$similarGames = collect();
if ($game->genres->isNotEmpty()) {
// Use IGDB similar_games if available, otherwise fall back to genre-based
if ($game->similarGames->isNotEmpty()) {
$similarGames = $game->similarGames;
} elseif ($game->genres->isNotEmpty()) {
$similarGames = Game::published()
->whereHas('genres', fn($q) => $q->whereIn('genres.id', $game->genres->pluck('id')))
->where('id', '!=', $game->id)
@@ -73,6 +79,8 @@ class GameController extends Controller
->orderByDesc('rating_avg')
->limit(6)
->get();
} else {
$similarGames = collect();
}
$response = view('games.show', compact('game', 'userGame', 'userReview', 'userLists', 'comments', 'similarGames'));