From f73e8a18a1aef6f7c19dfdec9d5bc0f4679de73d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Tue, 10 Feb 2026 16:35:04 +0900 Subject: [PATCH] =?UTF-8?q?fix:=EC=9E=85=EC=B6=9C=EA=B8=88=EB=82=B4?= =?UTF-8?q?=EC=97=AD=20=EC=A0=80=EC=9E=A5=20=EC=8B=9C=20decimal:2=20cast?= =?UTF-8?q?=20dirty=20=EA=B0=90=EC=A7=80=EB=A1=9C=20=EC=9D=B8=ED=95=9C=20u?= =?UTF-8?q?nique=20=EC=A0=9C=EC=95=BD=EC=A1=B0=EA=B1=B4=20=EC=9C=84?= =?UTF-8?q?=EB=B0=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Eloquent 모델의 decimal:2 cast가 balance를 dirty로 잘못 감지하여 UPDATE 시 balance가 포함되면서 unique 제약조건 위반 발생. Query Builder(DB::table)로 변경하여 지정 필드만 업데이트. Co-Authored-By: Claude Opus 4.6 --- .../Barobill/EaccountController.php | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/app/Http/Controllers/Barobill/EaccountController.php b/app/Http/Controllers/Barobill/EaccountController.php index adb94227..1b51e9f0 100644 --- a/app/Http/Controllers/Barobill/EaccountController.php +++ b/app/Http/Controllers/Barobill/EaccountController.php @@ -949,14 +949,18 @@ public function save(Request $request): JsonResponse ->first(); if ($existing) { - // 계정과목 + 적요/예금주명 업데이트 (balance는 키값이므로 제외) - $existing->update([ - 'summary' => $data['summary'], - 'cast' => $data['cast'], - 'trans_office' => $data['trans_office'], - 'account_code' => $data['account_code'], - 'account_name' => $data['account_name'], - ]); + // Query Builder 사용: Eloquent의 decimal:2 cast가 balance를 + // dirty로 잘못 감지하여 unique 제약조건 위반을 일으키는 문제 방지 + DB::table('barobill_bank_transactions') + ->where('id', $existing->id) + ->update([ + 'summary' => $data['summary'], + 'cast' => $data['cast'], + 'trans_office' => $data['trans_office'], + 'account_code' => $data['account_code'], + 'account_name' => $data['account_name'], + 'updated_at' => now(), + ]); $updated++; } else { BankTransaction::create($data);