在 ThinkPHP 6 中,分页查询通常是通过使用查询构建器与分页类来实现的。以下是一个简单的分页查询示例:
1. 数据库查询与分页
假设你有一个 users
表,并希望对其进行分页查询。
use think\facade\Db;
use think\Paginator;
// 假设每页显示10条数据
$pageSize = 10;
// 获取当前页码,默认为1
$page = input('get.page/d', 1);
// 查询数据并进行分页
$users = Db::name('users')
->page($page, $pageSize)
->select();
// 获取总记录数(可选,通常用于前端展示)
$total = Db::name('users')->count();
// 或者使用分页类来获取分页数据和分页信息
$paginatedData = Db::name('users')
->paginate([
'list_rows' => $pageSize,
'page' => $page,
]);
// 渲染分页数据到视图(假设你在控制器中)
return view('user/index', [
'users' => $paginatedData->items(), // 当前页数据
'pagination' => $paginatedData->render(), // 分页导航
]);
2. 使用模型进行分页
如果你使用模型来进行数据库操作,分页过程类似:
use app\model\User;
// 假设每页显示10条数据
$pageSize = 10;
// 获取当前页码,默认为1
$page = input('get.page/d', 1);
// 使用模型进行分页查询
$paginatedData = User::paginate([
'list_rows' => $pageSize,
'page' => $page,
]);
// 渲染分页数据到视图(假设你在控制器中)
return view('user/index', [
'users' => $paginatedData->items(), // 当前页数据
'pagination' => $paginatedData->render(), // 分页导航
]);
3. 分页结果
paginate
方法返回一个 Paginator
对象,该对象包含以下常用属性和方法:
items()
: 获取当前页的数据。render()
: 生成分页导航的 HTML。total()
: 获取总记录数。lastPage()
: 获取最后一页的页码。currentPage()
: 获取当前页的页码。
4. 视图中的分页导航
在视图中,你可以直接使用 $pagination
变量来输出分页导航:
<ul>
{!! $pagination !!}
</ul>
注意事项
- 确保在控制器中正确处理分页逻辑,并将分页数据和导航传递给视图。
- 你可以根据需要自定义分页导航的样式,
render()
方法生成的 HTML 可以直接用于前端展示。 - 如果数据量很大,考虑使用缓存或其他优化手段来提高查询性能。
通过以上步骤,你可以在 ThinkPHP 6 中轻松实现分页查询功能。