*/ protected $dispatchesEvents = [ 'created' => PerformanceCreated::class, 'deleted' => PerformanceDeleted::class, 'deleting' => PerformanceDeleting::class, 'restored' => PerformanceRestored::class, 'updated' => PerformanceUpdated::class, ]; /** * The attributes that are mass assignable. * * @var list */ protected $fillable = [ Performance::ATTRIBUTE_SONG, Performance::ATTRIBUTE_ARTIST_TYPE, Performance::ATTRIBUTE_ARTIST_ID, Performance::ATTRIBUTE_ALIAS, Performance::ATTRIBUTE_AS, Performance::ATTRIBUTE_RELEVANCE, ]; public function getName(): string { return strval($this->getKey()); } public function getSubtitle(): string { return $this->song->getName(); } public function isMembership(): bool { return $this->artist_type === Relation::getMorphAlias(Membership::class); } /** * @return BelongsTo */ public function song(): BelongsTo { return $this->belongsTo(Song::class, Song::ATTRIBUTE_ID); } public function artist(): MorphTo { return $this->morphTo(); } /** * Alias of artist(). */ public function membership(): MorphTo { return $this->artist(); } }