'date', 'last_air_date' => 'date', 'languages' => 'array', ]; public function wasListedBy(string $listSlug, User $user) { $mediaList = MediaList::where('slug', $listSlug)->where('user_id', $user->id)->first(); if ($mediaList) { $mediaListItem = MediaListItem::where('media_list_id', $mediaList->id) ->where('item_id', $this->id) ->where('item_type', 'show') ->first(); return !empty($mediaListItem); } return false; } public function ratingBy(User $user) { $rating = Rate::where('user_id', $user->id) ->where('item_id', $this->id) ->where('item_type', 'show') ->first(); return $rating ? $rating->rate : null; } public function externalIds() { return $this->hasOne(ExternalId::class, 'entity_id', 'id') ->where('external_ids.entity_type', 'show'); } public function castList() { return $this->belongsToMany(Person::class, 'show_cast', 'show_id', 'person_id'); } public function crewList() { return $this->belongsToMany(Person::class, 'show_crew', 'show_id', 'person_id'); } public function images(string $type = 'posters') { if ($type === Image::TYPE_POSTER) { return $this->belongsToMany(Image::class, 'show_images', 'show_id', 'image_id') ->where('type', Image::TYPE_POSTER); } return $this->belongsToMany(Image::class, 'show_images', 'show_id', 'image_id') ->where('type', '=', Image::TYPE_BACKDROP); } public function posters() { return $this->belongsToMany(Image::class, 'show_images', 'show_id', 'image_id') ->where('type', Image::TYPE_POSTER); } public function backdrops() { return $this->belongsToMany(Image::class, 'show_images', 'show_id', 'image_id') ->where('type', '=', Image::TYPE_BACKDROP); } public function videos() { return $this->belongsToMany(Video::class, 'show_videos', 'show_id', 'video_id'); } public function keywords() { return $this->belongsToMany(Keyword::class, 'show_keywords', 'show_id', 'keyword_id'); } public function watchProviders() { return $this->belongsToMany(WatchProvider::class, 'show_watch_providers', 'show_id', 'watch_provider_id'); } public function contentRatings() { return $this->belongsToMany(ContentRating::class, 'show_content_ratings', 'show_id', 'content_rating_id'); } public function genres() { return $this->belongsToMany(Genre::class, 'show_genres', 'show_id', 'genre_id'); } public function networks() { return $this->belongsToMany(Network::class, 'show_networks', 'show_id', 'network_id'); } public function productionCompanies() { return $this->belongsToMany(ProductionCompany::class, 'show_production_companies', 'show_id', 'production_company_id'); } public function productionCountries() { return $this->belongsToMany(ProductionCountry::class, 'show_production_countries', 'show_id', 'production_country_id'); } }