*/ 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, Performance::ATTRIBUTE_ALIAS, Performance::ATTRIBUTE_AS, Performance::ATTRIBUTE_MEMBER, Performance::ATTRIBUTE_MEMBER_ALIAS, Performance::ATTRIBUTE_MEMBER_AS, Performance::ATTRIBUTE_RELEVANCE, ]; public $sortable = [ 'order_column_name' => Performance::ATTRIBUTE_RELEVANCE, ]; /** * Get the attributes that should be cast. * * @return array */ protected function casts(): array { return [ Performance::ATTRIBUTE_ALIAS => 'string', Performance::ATTRIBUTE_ARTIST => 'int', Performance::ATTRIBUTE_AS => 'string', Performance::ATTRIBUTE_MEMBER => 'int', Performance::ATTRIBUTE_MEMBER_ALIAS => 'string', Performance::ATTRIBUTE_MEMBER_AS => 'string', Performance::ATTRIBUTE_RELEVANCE => 'int', Performance::ATTRIBUTE_SONG => 'int', ]; } public function getName(): string { return strval($this->getKey()); } public function getSubtitle(): string { return $this->song->getName(); } public function buildSortQuery(): Builder { return static::query()->whereBelongsTo($this->song); } /** * @return BelongsTo */ public function song(): BelongsTo { return $this->belongsTo(Song::class, Song::ATTRIBUTE_ID); } /** * @return BelongsTo */ public function artist(): BelongsTo { return $this->belongsTo(Artist::class, Performance::ATTRIBUTE_ARTIST); } /** * @return BelongsTo */ public function member(): BelongsTo { return $this->belongsTo(Artist::class, Performance::ATTRIBUTE_MEMBER); } }