-
Query Builder paginate 메서백엔드/laravel 2024. 1. 15. 17:58
// posts 테이블에서 페이지당 25개의 항목으로 데이터 가져오기
$posts = DB::table('posts')->paginate(25); <= [이전] 1 2 3 4 5 ... [다음]$posts = DB::table('posts')->simplePaginate(10); <= 단순이 [이전] [다음]
$posts = DB::table('posts')->orderBy('id')->cursorPaginate(10); <= 커서 페이지네이션(cursor pagination)
// Blade 템플릿에서 페이징 출력하기
return view('posts.index', compact('posts'));<!-- 뷰 파일 (posts/index.blade.php) 예제 -->
@foreach ($posts as $post)
<!-- 게시물 내용 표시 -->
@endforeach
<!-- 페이징 링크 표시 -->
<div class="p-10">
{{ $posts->links() }}
</div>코드는 이전 두 메서드와 매우 유사하지만 paginate 또는 simplePaginate 메서드 대신 cursorPaginate 메서드를 사용해야 합니다. 브라우저로 이동하여 엔드포인트를 새로 고치면 이 함수를 사용할 때 정렬 절을 지정해야 한다는 오류가 발생할 것입니다. 이는 데이터가 어떤 순서로 검색되어야 하는지를 명시하기 위해 필요하며, 커서는 정렬된 데이터 세트를 효과적으로 탐색할 방법을 알아야하기 때문입니다.
그래서 PHP Storm으로 돌아가서 cursorPaginate 메서드 위에 orderBy 메서드를 연결해 보겠습니다. 여기서는 ID 열을 기준으로 정렬하겠습니다. 그리고 기본적으로 cursorPaginate 메서드는 페이지당 15개의 항목을 가져오지만, 이를 10으로 변경하겠습니다.
커서 페이지네이션의 주요 이점 중 하나는 빠른 데이터 검색을 가능하게 한다는 점입니다. 이는 데이터가 작은 청크로 검색되고 사용자가 요청할 때만 다음 데이터 세트를 검색해야 하기 때문에 발생합니다. 현재 페이지 2에 있고 10개의 게시물만 로드되었습니다. 다음을 클릭하면 새로운 요청을 통해 10개의 새로운 게시물을 가져옵니다. 이로써 처리해야 하는 데이터 양이 줄어들어 로드 시간이 단축되고 전반적인 성능이 향상됩니다.
커서 페이지네이션의 또 다른 이점은 데이터의 더 정확한 정렬을 가능하게 한다는 것입니다. 이는 커서가 데이터를 정렬하는 데 사용되기 때문에 데이터가 검색된 순서에 의존하지 않는다는 것을 의미합니다. 데이터는 더 정확하고 예측 가능한 방식으로 저장될 수 있습니다.
물론 반복해서 언급한 것처럼 모든 방법에는 단점도 있습니다. 커서 페이지네이션의 주요 단점 중 하나는 다른 페이지네이션 방법보다 구현하기가 더 복잡할 수 있다는 것입니다. 이는 응용 프로그램이 사용자가 다음 데이터 세트를 요청할 때마다 커서를 추적하고 올바르게 업데이트해야 하기 때문입니다. 이것은 복잡한 데이터 구조나 여러 데이터베이스를 다룰 때 가장 어려울 수 있습니다.
커서 페이지네이션의 또 다른 단점은 사용자에게 덜 직관적일 수 있다는 것입니다. 사용자들은 일반적으로 페이지를 스크롤하는 것에 익숙하며 여러 작은 청크를 클릭하여 이동하는 것은 덜 직관적일 수 있습니다. 이는 커서 페이지네이션 방법에 익숙하지 않은 사용자에게 어려울 수 있습니다.
나는 개인적으로 커서 페이지네이션 방법을 좋아하지 않는 이유 중 하나는 정렬된 데이터만 사용할 수 있다는 것입니다. 이는 커서 페이지네이션 방법이 제대로 작동하려면 데이터가 특정한 방식으로 정렬되어야 하기 때문에 어려울 수 있습니다. 이는 비정형이거나 정렬되지 않은 데이터를 다룰 때 매우 어려울 수 있습니다.
커서 페이지네이션 방법은 다음 데이터 세트를 요청할 때마다 애플리케이션이 더 작은 데이터 청크를 검색하고 처리해야 하기 때문에 다른 페이지네이션 방법보다 리소스 집약적일 수 있습니다. 특히 대규모 데이터 세트나 복잡한 데이터 구조를 처리할 때 이 점이 도전적일 수 있습니다.
간단한 요약으로 커서 페이지네이션은 큰 데이터 세트와 함께 작업할 때 유용한 강력한 페이지네이션 방법입니다. 데이터 검색이 빠르고 정확한 정렬이 가능하며 전반적으로 더 나은 성능을 제공할 수 있습니다. 그러나 다른 페이지네이션 방법보다 구현이 더 복잡하고 사용자에게는 덜 직관적일 수 있으며 정렬된 데이터에 의존해야 합니다.
'백엔드 > laravel' 카테고리의 다른 글
라라벨 updateOrCreate 및 upsert 메서드 (0) 2024.01.19 라라벨 isDirty, isClean 및 wasChanged 메서드 (0) 2024.01.19 Query Builder reorder 메서드 (0) 2024.01.15 Query Builder when 메소드 (0) 2024.01.15 Query Builder limit 및 offset 메소드 (0) 2024.01.15