api로 받아온 Paginator 를 livewire 에서 사용하기
Updated on
if (!function_exists('makeLengthAwarePaginator')) {
function makeLengthAwarePaginator(
array|null $lengthAwarePaginatorArray,
): LengthAwarePaginator|null {
if($lengthAwarePaginatorArray === null) {
return null;
}
$perPage = $lengthAwarePaginatorArray['per_page'] ?? $lengthAwarePaginatorArray['meta']['per_page'];
$page = Paginator::resolveCurrentPage(default: 1);
$path = Paginator::resolveCurrentPath();
$items = $lengthAwarePaginatorArray['data'] ?? [];
$items = $items instanceof Collection ? $items : Collection::make($items);
$paginator = new LengthAwarePaginator(
$items->forPage(1, $perPage),
$lengthAwarePaginatorArray['total'] ?? $lengthAwarePaginatorArray['meta']['total'],
$perPage,
$page,
[]
);
if (!blank($path)) {
$paginator = $paginator->setPath($path);
}
return $paginator;
}
}보통 laravel pagination 은
array:3 [▶
"data" => array:7 [▶]
"links" => array:4 [▶]
"meta" => array:8 [▶]
]이 형태로 반환되는데, 이 형태로 반환된 값을 기반으로 다시 LengthAwarePaginator 로 만들어서 사용하는 방법이다.