fix: [근태현황] soft-deleted attendance 복원 시 $fillable 제한 문제 수정

deleted_at이 Attendance 모델 $fillable에 없어서
updateOrCreate()에서 deleted_at=null 설정이 무시되던 근본 원인 수정.
restore() 메서드로 soft-delete 복원하도록 변경.
This commit is contained in:
김보곤
2026-03-19 21:55:28 +09:00
parent 66224511f1
commit a8c33ee55f
2 changed files with 15 additions and 7 deletions

View File

@@ -158,8 +158,8 @@ private function syncApprovedLeaveAttendances(array $filters = []): void
continue;
}
// 누락된 attendance 레코드 생성
Attendance::withTrashed()->updateOrCreate(
// 누락된 attendance 레코드 생성 (soft-deleted 포함 검색 → 복원)
$attendance = Attendance::withTrashed()->updateOrCreate(
[
'tenant_id' => $tenantId,
'user_id' => $leave->user_id,
@@ -169,11 +169,15 @@ private function syncApprovedLeaveAttendances(array $filters = []): void
'status' => $attendanceStatus,
'remarks' => $leave->reason ? mb_substr($leave->reason, 0, 100) : null,
'updated_by' => $leave->approved_by,
'deleted_at' => null,
'deleted_by' => null,
]
);
// deleted_at은 $fillable에 없으므로 restore()로 복원
if ($attendance->trashed()) {
$attendance->restore();
$attendance->update(['deleted_by' => null]);
}
$existingKeys[$key] = true;
}
}

View File

@@ -1184,7 +1184,7 @@ private function createAttendanceRecords(Leave $leave, int $tenantId, string $st
continue;
}
Attendance::withTrashed()->updateOrCreate(
$attendance = Attendance::withTrashed()->updateOrCreate(
[
'tenant_id' => $tenantId,
'user_id' => $leave->user_id,
@@ -1194,10 +1194,14 @@ private function createAttendanceRecords(Leave $leave, int $tenantId, string $st
'status' => $status,
'remarks' => $leave->reason ? mb_substr($leave->reason, 0, 100) : null,
'updated_by' => auth()->id(),
'deleted_at' => null,
'deleted_by' => null,
]
);
// deleted_at은 $fillable에 없으므로 restore()로 복원
if ($attendance->trashed()) {
$attendance->restore();
$attendance->update(['deleted_by' => null]);
}
}
}