create([ 'tmdb_id' => $data['tmdb_id'], 'title' => $data['title'], 'media_type' => $data['media_type'], 'original_title' => $data['original_title'], 'poster' => $data['poster'], 'rating' => 1, 'released' => $data['released'], 'genre' => $data['genre'], 'created_at' => time(), ]); } /* * Relations */ public function episodes() { return $this->hasMany(Episode::class, 'tmdb_id', 'tmdb_id'); } public function alternativeTitles() { return $this->hasMany(AlternativeTitle::class, 'tmdb_id', 'tmdb_id'); } public function latestEpisode() { return $this->hasOne(Episode::class, 'tmdb_id', 'tmdb_id') ->orderBy('id', 'desc') ->where('seen', true) ->latest(); } /* * Scopes */ public function scopeFindByTmdbId($query, $tmdbId) { return $query->where('tmdb_id', $tmdbId); } public function scopeFindBySrc($query, $src) { return $query->where('src', $src); } public function scopeFindByTitle($query, $title) { return $query->where('title', 'like', '%' . $title . '%') ->orWhere('original_title', 'like', '%' . $title . '%') ->orWhereHas('alternativeTitles', function($query) use ($title) { $query->where('title', 'like', '%' . $title . '%'); }); } }