From 6fe2d02b51ef50ccc8333c1d3e19c1ee3b684108 Mon Sep 17 00:00:00 2001 From: hskwon Date: Tue, 16 Dec 2025 23:38:24 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20ItemField=20=EB=AA=A9=EB=A1=9D=20?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=EB=84=A4=EC=9D=B4=EC=85=98=20?= =?UTF-8?q?=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - getFields() 반환 타입을 Collection에서 LengthAwarePaginator로 변경 - per_page 값을 뷰에 전달하여 셀렉트박스 selected 상태 유지 --- app/Http/Controllers/Api/Admin/ItemFieldController.php | 7 ++++++- app/Services/ItemFieldSeedingService.php | 10 +++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/app/Http/Controllers/Api/Admin/ItemFieldController.php b/app/Http/Controllers/Api/Admin/ItemFieldController.php index b3de3e9c..8282c656 100644 --- a/app/Http/Controllers/Api/Admin/ItemFieldController.php +++ b/app/Http/Controllers/Api/Admin/ItemFieldController.php @@ -161,11 +161,16 @@ public function customFields(Request $request): View } // getFields() 메서드 사용 (시스템 + 커스텀 모두 조회, 시스템 필드 우선 정렬) - $fields = $this->service->getFields($tenantId, $request->all()); + $filters = $request->all(); + $fields = $this->service->getFields($tenantId, $filters); + + // per_page 값을 명시적으로 뷰에 전달 (셀렉트박스 selected 상태 유지용) + $perPage = !empty($filters['per_page']) ? (int) $filters['per_page'] : 20; return view('item-fields.partials.custom-fields', [ 'fields' => $fields, 'sourceTables' => $sourceTables, + 'perPage' => $perPage, ]); } diff --git a/app/Services/ItemFieldSeedingService.php b/app/Services/ItemFieldSeedingService.php index 597dbe98..fa5e7eba 100644 --- a/app/Services/ItemFieldSeedingService.php +++ b/app/Services/ItemFieldSeedingService.php @@ -333,9 +333,9 @@ public function resetAll(int $tenantId): array /** * 필드 목록 조회 (시스템 + 커스텀) * - * @param array $filters source_table, field_type, field_category (system|custom), search + * @param array $filters source_table, field_type, field_category (system|custom), search, per_page */ - public function getFields(int $tenantId, array $filters = []): Collection + public function getFields(int $tenantId, array $filters = []): \Illuminate\Contracts\Pagination\LengthAwarePaginator { $query = ItemField::withTrashed()->where('tenant_id', $tenantId); @@ -367,11 +367,15 @@ public function getFields(int $tenantId, array $filters = []): Collection }); } + // 페이지당 항목 수 (기본 20개) + $perPage = !empty($filters['per_page']) ? (int) $filters['per_page'] : 20; + // 시스템 필드 우선 정렬 (is_common DESC), 그 다음 source_table, order_no return $query->orderByDesc('is_common') ->orderBy('source_table') ->orderBy('order_no') - ->get(); + ->paginate($perPage) + ->withQueryString(); } /**