'date', 'rating' => 'float', 'rating_count' => 'integer', ]; public function genres(): BelongsToMany { return $this->belongsToMany(Genre::class, 'game_genre', 'game_id', 'genre_id'); } public function platforms(): BelongsToMany { return $this->belongsToMany(Platform::class, 'game_platform', 'game_id', 'platform_id'); } public function screenshots(): HasMany { return $this->hasMany(Screenshot::class); } public function videos(): HasMany { return $this->hasMany(Video::class); } public function bundles(): BelongsToMany { return $this->belongsToMany(Game::class, 'game_bundles', 'game_id', 'bundle_id'); } public function collections(): BelongsToMany { return $this->belongsToMany(Game::class, 'game_collections', 'game_id', 'collection_id'); } public function dlcs(): BelongsToMany { return $this->belongsToMany(Game::class, 'game_dlcs', 'game_id', 'dlc_id'); } public function expansions(): BelongsToMany { return $this->belongsToMany(Game::class, 'game_expansions', 'game_id', 'expansion_id'); } public function franchises(): BelongsToMany { return $this->belongsToMany(Game::class, 'game_franchises', 'game_id', 'franchise_id'); } public function ports(): BelongsToMany { return $this->belongsToMany(Game::class, 'game_ports', 'game_id', 'port_id'); } public function remakes(): BelongsToMany { return $this->belongsToMany(Game::class, 'game_remakes', 'game_id', 'remake_id'); } public function similar_games(): BelongsToMany { return $this->belongsToMany(Game::class, 'game_similar', 'game_id', 'similar_game_id'); } public function reviews(): HasMany { return $this->hasMany(Review::class); } public function ratings() { return $this->hasMany(Rating::class); } public function lists() { return $this->belongsToMany(GameList::class)->withTimestamps(); } public function averageRating() { return $this->ratings()->avg('rating'); } }