Pagination은 웹 애플리케이션에서 일반적인 기능입니다. 내가 일한 거의 모든 라벨 애플리케이션은 어떤 형태의 페이지 매김이 구현되었습니다.
paginate
- 오프셋 기반 페이지 매김을 사용하지만 데이터 세트의 총 레코드 수를 가져 오지 않습니다.
- 커서 기반 페이지 매김을 사용하고 데이터 세트의 총 레코드 수를 가져 오지 않습니다.
cursorPaginate
위의 코드를 실행하면
메소드가 데이터의 두 번째 페이지를 가져옵니다.
기본적으로, Laravel 기본의 모든 페이지 매김 방법은 한 번에 15 개의 레코드를 가져 오기 위해 기본적으로 기본적으로 기본적으로. 그러나 이것은 다른 값으로 변경 될 수 있습니다 (나중에이 작업을 수행하는 방법을 살펴 보겠습니다). #using 블레이드 뷰가있는 블레이드 뷰에서 데이터를 렌더링 할 때paginate
메소드를 사용하는 방법을 살펴 보겠습니다.
우리는 데이터베이스에서 사용자를 페이지에 입은 형식으로 가져 와서보기로 전달하는 간단한 경로를 가지고 있다고 상상해보십시오.
우리의 파일은 다음과 같이 보일 수 있습니다
paginate
엔드 포인트에 액세스하면 다음과 비슷한 JSON 응답을 반환합니다 ( 메소드는 데이터 세트의 총 레코드 수를 가져 오지 않습니다.
위의 코드를 실행하면 가
.
API 엔드 포인트에서 #using $users
객체에서 IlluminatePaginationLengthAwarePaginator
메소드를 호출합니다. 이것은 Pagination 링크 (예 : "previous", "next"및 페이지 번호)를 표시하는 일부 HTML을 반환하는 편리한 방법입니다. 즉, Pagination Links를 직접 작성하는 것에 대해 걱정할 필요가 없으며 Laravel은 모든 것을 처리 할 것입니다. links
메소드가 우리에게 페이지 매김 데이터에 대한 개요를 제공하고 있음을 알 수 있습니다. 우리는 총 50 개의 레코드 중 16 ~ 30 번째 기록을보고 있음을 알 수 있습니다. 우리는 또한 우리가 두 번째 페이지에 있고 총 4 페이지가 있음을 알 수 있습니다. $users
paginate
메소드를 사용하면 API 엔드 포인트에서도 사용할 수도 있습니다. Laravel은 Paginated 데이터를 JSON으로 자동 변환 하여이 프로세스를 쉽게 만듭니다.
예를 들어, links
필드를 간결성을 위해 단 3 개의 레코드로 제한) :
- 현재 페이지입니다. 이 경우 우리는 첫 페이지에 있습니다.
current_page
- 데이터의 첫 페이지에 대한 URL. data
first_page_url
- 다른 데이터 페이지에 대한 링크 배열. 여기에는 "이전"및 "다음"링크와 페이지 번호가 포함됩니다.
from
- 엔드 포인트의 기본 URL
- 페이지 당 반환되는 레코드 수. 이 경우 15. last_page
입니다. 우리가 두 번째 페이지에 있다면 이것은 첫 번째 페이지의 URL입니다. last_page_url
- 데이터 세트의 총 레코드 수입니다. 이 경우 50 개의 레코드가 있습니다. links
메소드를 사용하면 두 개의 SQL 쿼리가 실행됩니다.
next_page_url
path
per_page
값은 다음과 같이 계산됩니다
prev_page_url
따라서 null
<!-- Syntax highlighted by torchlight.dev -->use App\Models\User;
$users = User::query()->paginate();
simplePaginate
방법은 메소드와 매우 유사하지만 한 가지 주요 차이점이 있습니다. simplePaginate
방금 본 바와 같이 paginate
메소드를 사용할 때 데이터 세트에서 사용 가능한 총 레코드 수 및 페이지에 대한 정보도 얻습니다. 그런 다음이 정보를 사용하여 UI 또는 API 응답의 총 페이지 수와 같은 것을 표시 할 수 있습니다.
simplePaginate
메소드는 paginate
의 인스턴스가 될 수 있습니다.
메소드에 의해 리턴 된 객체와 달리 객체에는 데이터 세트의 총 레코드 수에 대한 정보가 포함되어 있지 않으며 얼마나 많은 페이지 또는 총 레코드가 있는지 모릅니다. 데이터의 현재 페이지와 가져올 레코드가 더 있는지 여부에 대해 알고 있습니다. simplePaginate
메소드를 어떻게 사용하는지 살펴 보겠습니다. 우리는 이전과 같은 경로를 가지고 있다고 가정하지만 이번에는
simplePaginate
paginate
<!-- Syntax highlighted by torchlight.dev -->use App\Models\User; use Illuminate\Support\Facades\Route; Route::get('users', function () { $users = User::query()->paginate(); return view('users.index', [ 'users' => $users, ]); });
위 내용은 Laravel의 Pagination에 대한 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!