페이징 쿼리
ThinkPHP에는 페이징 구현이 내장되어 있습니다. 데이터에 페이징 출력 기능을 추가하는 것은 매우 간단합니다. Db 클래스를 쿼리할 때 paginate 메서드를 직접 호출할 수 있습니다.
// 查询状态为1的用户数据 并且每页显示10条数据 $list = Db::name('user')->where('status',1)->order('id', 'desc')->paginate(10); // 渲染模板输出 return view('index', ['list' => $list]);
템플릿 파일의 페이징 출력 코드는 다음과 같습니다. :
<div> <ul> {volist name='list' id='user'} <li> {$user.nickname}</li> {/volist} </ul> </div> {$list|raw}
템플릿 파일의 페이징 출력 코드는 다음과 같습니다.
<div> <ul> {volist name='list' id='user'} <li> {$user.nickname}</li> {/volist} </ul> </div> {$list|raw}
페이징 출력의 템플릿 변수를 별도로 할당할 수도 있습니다.
// 查询状态为1的用户数据 并且每页显示10条数据 $list = Db::name('user')->where('status',1)->order('id', 'desc')->paginate(10); // 获取分页显示 $page = $list->render(); return view('index', ['list' => $list, 'page' => $page]);
템플릿 파일의 페이징 출력 코드는 다음과 같습니다.
<div> <ul> {volist name='list' id='user'} <li> {$user.nickname}</li> {/volist} </ul> </div> {$page|raw}
By 기본적으로 생성된 페이징 출력은 전체 페이징 데이터와 상위 및 하위 페이지 번호가 포함된 완전한 페이징 기능입니다. 페이징 스타일은 스타일을 통해서만 수정하면 됩니다. 총 데이터를 별도로 가져와야 하며
<ul class="pagination"> <li><a href="?page=1">«</a></li> <li><a href="?page=1">1</a></li> <li class="active"><span>2</span></li> <li class="disabled"><span>»</span></li> </ul>를 사용하여 총 레코드 수를 전달할 수 있습니다
총 레코드 수 전달 지원 총계를 자동으로 계산하지 않고 레코드 수, 예:
// 查询状态为1的用户数据 并且每页显示10条数据 $list = Db::name('user')->where('status',1)->order('id' ,'desc')->paginate(10); // 获取总记录数 $count = $list->total(); return view('index', ['list' => $list, 'count' => $count]);
UNION 쿼리 및 일부 특별하고 복잡한 쿼리의 경우 이 방법을 사용하여 먼저 총 레코드 수를 별도로 쿼리한 다음 이를 페이징 메서드에 전달하는 것이 좋습니다.
페이징 후 데이터 처리직접 각 순회 처리 지원 모델의 getter를 통해 필드를 추가하는 대신 페이지 매김 데이터 수정을 용이하게 하는 페이지 매김 클래스 이후의 데이터입니다.
// 查询状态为1的用户数据 并且每页显示10条数据 总记录数为1000 $list = Db::name('user')->where('status',1)->paginate(10,1000); // 获取分页显示 $page = $list->render(); return view('index', ['list' => $list, 'page' => $page]);
모델 클래스가 페이징 데이터를 작동하는 경우 각 메서드의 클로저 함수에 반환 값을 사용할 필요가 없습니다. 예:
$list = Db::name('user')->where('status',1)->order('id', 'desc')->paginate()->each(function($item, $key){ $item['nickname'] = 'think'; return $item; });간단한 페이징
페이징 출력만 출력하면 되는 경우 상위 및 하위 페이지만 있는 경우 다음과 같은 간결한 페이징 코드를 사용할 수 있습니다.
$list = User::where('status',1)->order('id', 'desc')->paginate()->each(function($item, $key){ $item->nickname = 'think'; });
간결한 페이징 모드의 출력 코드는 다음과 같습니다.
// 查询状态为1的用户数据 并且每页显示10条数据 $list = Db::name('user')->where('status',1)->order('id', 'desc')->paginate(10, true); // 渲染模板输出 return view('index', ['list' => $list]);
간결한 페이징 모드에서는 전체 데이터 수를 쿼리할 필요가 없으므로 쿼리를 향상할 수 있습니다. 성능.
페이징 매개변수주요 페이징 매개변수는 다음과 같습니다.
Description | |
페이지당 수 | |
현재 페이지 | |
url 경로 | |
url 추가 매개변수 | |
url 앵커 | |
페이징 변수 |