fix: ItemField 목록 페이지네이션 개선

- getFields() 반환 타입을 Collection에서 LengthAwarePaginator로 변경
- per_page 값을 뷰에 전달하여 셀렉트박스 selected 상태 유지
This commit is contained in:
2025-12-16 23:38:24 +09:00
parent 25ef6659ba
commit 6fe2d02b51
2 changed files with 13 additions and 4 deletions

View File

@@ -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,
]);
}

View File

@@ -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();
}
/**