'array', 'deleted_at' => 'datetime', 'original_id' => 'integer', 'tenant_id' => 'integer', 'deleted_by' => 'integer', ]; /** * 관계: 대상 테넌트 * NOTE: 삭제된 테넌트를 참조할 수 있어 FK 없음 */ public function tenant(): BelongsTo { return $this->belongsTo(Tenant::class, 'tenant_id'); } /** * 관계: 삭제한 사용자 */ public function deletedByUser(): BelongsTo { return $this->belongsTo(User::class, 'deleted_by'); } /** * 관계: 연관 테이블 데이터 */ public function relations(): HasMany { return $this->hasMany(ArchivedRecordRelation::class, 'archived_record_id'); } /** * Scope: 테넌트 타입만 */ public function scopeTenant($query) { return $query->where('record_type', 'tenant'); } /** * Scope: 사용자 타입만 */ public function scopeUser($query) { return $query->where('record_type', 'user'); } /** * 레코드 타입 레이블 */ public function getRecordTypeLabelAttribute(): string { return match ($this->record_type) { 'tenant' => '테넌트', 'user' => '사용자', default => $this->record_type, }; } /** * 메인 데이터 요약 */ public function getMainDataSummaryAttribute(): string { if (empty($this->main_data)) { return '-'; } $data = $this->main_data; $name = $data['name'] ?? $data['title'] ?? '-'; $id = $data['id'] ?? $this->original_id; return "{$name} (ID: {$id})"; } }