*/ protected $fillable = [ 'contact_id', 'type_id', 'data', ]; /** * Get the contact associated with the contact information. */ public function contact(): BelongsTo { return $this->belongsTo(Contact::class); } /** * Get the contact information type associated with the contact information. */ public function contactInformationType(): BelongsTo { return $this->belongsTo(ContactInformationType::class, 'type_id'); } /** * Get the content of the contact information. * If the contact information type is a phone number or an email, return the * content. If it's something else, return the contact information type's label. * * @return Attribute */ protected function name(): Attribute { return Attribute::make( get: function ($value) { $type = $this->contactInformationType; if (! $type->can_be_deleted) { return $this->data; } else { return $type->name; } }, set: fn ($value) => $value, ); } /** * Get the contact information's feed item. */ public function feedItem(): MorphOne { return $this->morphOne(ContactFeedItem::class, 'feedable'); } }