'array', 'is_archived' => 'boolean', ]; } public function type() { return $this->belongsTo(FlexibleAssetType::class, 'flexible_asset_type_id'); } public function organization() { return $this->belongsTo(Organization::class); } public function creator() { return $this->belongsTo(User::class, 'created_by'); } public function relatedItems() { return RelatedItem::forItem($this); } public function logs() { return $this->hasMany(FlexibleAssetLog::class)->orderByDesc('created_at'); } public function linkableKind(): string { return $this->type?->name ?? 'Flexible Asset'; } public function linkableLabel(): string { return $this->name; } public function linkableUrl(): string { return route('organizations.assets.edit', [$this->organization_id, $this->flexible_asset_type_id, $this]); } }