fix: ItemField 목록 페이지네이션 개선
- getFields() 반환 타입을 Collection에서 LengthAwarePaginator로 변경 - per_page 값을 뷰에 전달하여 셀렉트박스 selected 상태 유지
This commit is contained in:
@@ -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,
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user