$igdbId], [ 'title' => $title, 'summary' => $data['summary'] ?? null, 'cover_url' => $coverUrl, 'cover_thumb_url' => $coverThumbUrl, 'release_date' => $releaseDate, 'release_year' => $releaseYear, 'status' => 'published', ] ); if (!empty($data['genres'])) { $genreIds = []; foreach ($data['genres'] as $g) { $genre = Genre::firstOrCreate( ['igdb_id' => $g['id']], ['name' => $g['name'], 'slug' => \Str::slug($g['name'])] ); $genreIds[] = $genre->id; } $game->genres()->sync($genreIds); } if (!empty($data['platforms'])) { $platformIds = []; foreach ($data['platforms'] as $p) { $platform = Platform::firstOrCreate( ['igdb_id' => $p['id']], ['name' => $p['name'], 'slug' => \Str::slug($p['name'])] ); $platformIds[] = $platform->id; } $game->platforms()->sync($platformIds); } if (!empty($data['involved_companies'])) { $companyPivot = []; foreach ($data['involved_companies'] as $ic) { if (empty($ic['company']['name'])) continue; $company = Company::firstOrCreate( ['igdb_id' => $ic['company']['id']], ['name' => $ic['company']['name'], 'slug' => \Str::slug($ic['company']['name'])] ); $role = $ic['developer'] ? 'developer' : ($ic['publisher'] ? 'publisher' : 'other'); $companyPivot[$company->id] = ['role' => $role]; } $game->companies()->sync($companyPivot); } if (!empty($data['screenshots'])) { GameScreenshot::where('game_id', $game->id)->delete(); foreach ($data['screenshots'] as $i => $shot) { GameScreenshot::create([ 'game_id' => $game->id, 'url' => $igdb::screenshotUrl($shot['image_id'], 'screenshot_big'), 'thumb_url' => $igdb::screenshotUrl($shot['image_id'], 'screenshot_med'), 'order' => $i, ]); } } } }