where($existsWhere)->exists() ) { throw new Exception( __('service.' . $this->menuTitle . '.reason_exists') ); } $model = ParkingDepartureReason::query()->create([ 'reason' => $data['reason'], 'remark' => $data['remark'] ?? '', 'created_at' => get_datetime() ]); $this->logService->logCreated( $model, $this->menuTitle . '.create' ); AdminTranslationService::saveTranslation( $data['reason'], $data['en_reason'] ?? '', $data['tw_reason'] ?? '', $model->id, 8 ); DB::commit(); return $model; } catch (Exception $e) { DB::rollBack(); throw $e; } } /** * @param array $data * @param int $id * @throws Exception */ public function updateModel(array $data, int $id) { try { DB::beginTransaction(); // 验证 $existsWhere = [ ['reason', '=', $data['reason']], ['id', '<>', $id] ]; if (ParkingDepartureReason::query()->where($existsWhere)->exists() ) { throw new Exception( __('service.' . $this->menuTitle . '.reason_exists') ); } // 更新 $model = ParkingDepartureReason::query()->findOrFail($id); $oldValues = $model->toArray(); $model->update([ 'reason' => $data['reason'], 'remark' => $data['remark'] ?? '', 'updated_at' => get_datetime() ]); $this->logService->logUpdated( $model, $oldValues, $this->menuTitle . '.update' ); AdminTranslationService::saveTranslation( $data['reason'], $data['en_reason'] ?? '', $data['tw_reason'] ?? '', $id, 8 ); DB::commit(); return $model; } catch (Exception $e) { DB::rollBack(); throw $e; } } /** * @param $id * @return bool * @throws Exception */ public function deleteModel($id): bool { try { DB::beginTransaction(); $model = ParkingDepartureReason::query()->findOrFail($id); $this->logService->logDeleted($model, $this->menuTitle . '.delete'); $model->delete(); AdminTranslationService::syncDelete($id, 8); DB::commit(); return true; } catch (Exception $e) { DB::rollBack(); throw $e; } } }