*/ protected $casts = [ 'podcast_id' => 'integer', 'episode_id' => '?integer', 'person_id' => 'integer', 'full_name' => 'string', 'person_group' => 'string', 'person_role' => 'string', ]; public function getPerson(): ?Person { if ($this->person_id === null) { throw new RuntimeException('Credit must have person_id before getting person.'); } if (! $this->person instanceof Person) { $this->person = (new PersonModel())->getPersonById($this->person_id); } return $this->person; } public function getPodcast(): ?Podcast { if ($this->podcast_id === null) { throw new RuntimeException('Credit must have podcast_id before getting podcast.'); } if (! $this->podcast instanceof Podcast) { $this->podcast = (new PodcastModel())->getPodcastById($this->podcast_id); } return $this->podcast; } public function getEpisode(): ?Episode { if ($this->episode_id === null) { throw new RuntimeException('Credit must have episode_id before getting episode.'); } if (! $this->episode instanceof Episode) { $this->episode = (new EpisodeModel())->getPublishedEpisodeById($this->podcast_id, $this->episode_id); } return $this->episode; } public function getGroupLabel(): string { if ($this->person_group === null) { return ''; } return lang("PersonsTaxonomy.persons.{$this->person_group}.label"); } public function getRoleLabel(): string { if ($this->person_group === '') { return ''; } if ($this->person_role === '') { return ''; } return lang("PersonsTaxonomy.persons.{$this->person_group}.roles.{$this->person_role}.label"); } }