티스토리 뷰

Laravel

오늘의 페이지네이션.

rediate.will 2020. 6. 22. 15:13

제공해 주는 페이지네이션은 쿼리빌더 상태에서만 쓸수있짜나 ㅠㅠ

그리고 우리 스트릭모드 다 맞추고 있어서 그냥 함부로 groupBy써서 중복제거 하는거 안쓰는게 더 편하다......

난 요고조고 가져와서 조합해서 페이지네이션 하고 싶다구 ㅠㅠ

 

그러니까,

 

컬렉션 단위 페이지네이션이 필요하고요,

 

https://rediant.tistory.com/entry/Laravel-74-%EC%88%98%EB%8F%99-%ED%8E%98%EC%9D%B4%EC%A7%80%EB%84%A4%EC%9D%B4%EC%85%98%EC%9D%84-%EC%95%84%EB%9D%BC%EB%B3%B4%EC%9F%88

 

요기에서 이어짐. ㅇㅇ

 

	/**
     * collection을 페이지네이션.
     *
     * @param $items
     * @param int $perPage
     * @param null $page
     * @param array $options
     *
     * @return LengthAwarePaginator
     */
    public function paginate($items, $perPage = 30, $page = null, $options = [])
    {
        $page = $page ?: (Paginator::resolveCurrentPage() ?: 1);
        $items = $items instanceof Collection ? $items : Collection::make($items);

        return new LengthAwarePaginator($items->forPage($page, $perPage), $items->count(), $perPage, $page, $options);
    }

 

그래서 제일 간단한 코드로 들고 옴.

스택오버플로표.

 

보기에도 간단한게 그냥 페이지 있으면 놔두고 없으면 현재페이지 가르키는 포인터가 있는지 체크해서 없으면 0, 있으면 그거 쓰고.

컬렉션인가 체크하고, 아니면 컬렉션타입으로 만들어주고,

수동 페이지네이터 ㄱㄱ

 

 

이제 직접 사용하는 컨트롤러 안에서 이것저것 조합해서 콜렉션으로 뽑아내고, 사용하면 된당.

$curationJobs = $query->get()->unique('job_id');
$curationJobs = $this->paginate($curationJobs, get_per_page());
$curationJobs->withPath('/curations/'.$name);

 

여기서 포인트는 막줄임.

만약 path안주고 그냥 사용하면 기본 APP_URI로 설정한 url root에서 ?page=2이런식으로 들어간다.

dev.l7.com/?page=2 이런식.

그래서 패스를 줘야한다.

저렇게 주면 제대로 dev.l7.com/curations/intern?page=2이런식으로 잘 들어감.

 

이걸로 한참 고민했더랜다. 하지만 답은 메뉴얼에 있는 것이었다 ㅠㅠㅠㅠ

 

 

https://laravel.com/docs/7.x/pagination#displaying-pagination-results

 

Database: Pagination - Laravel - The PHP Framework For Web Artisans

 

laravel.com

Customizing The Paginator URI부분이당.

 

난 왜 몰랐을까아~?

이제부터 알면 됐지!

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함