ThinkPHP6.0中分页查询使用paginate()方法实现,支持模型和Db类调用,可自定义每页数量、当前页及查询参数,模板中用render()输出分页HTML,遍历需用volist标签。

在 ThinkPHP6.0 中实现分页查询非常简单,核心是使用 paginate() 方法替代传统的 select() 或 get(),框架会自动处理总记录数、当前页、每页数量及分页参数解析。
基础分页写法(数据库查询)
直接在模型或 Db 类中调用 paginate() 即可:
- 使用模型分页(推荐):
$list = UserModel::where('status', 1)->paginate(10);
其中10表示每页显示 10 条,当前页默认从 GET 参数page获取(如?page=2)。 - 使用 Db 查询分页:
$list = Db::name('user')->where('status', 1)->paginate(15);
自定义分页参数
可通过数组传入更灵活的配置:
-
list_rows:每页数量(等同于上面的数字参数) -
page:指定当前页码(可用于非 GET 场景,如接口传参) -
query:追加到分页链接的额外参数(常用于保留搜索条件)->paginate(['list_rows'=>12, 'page'=>input('page/d', 1), 'query'=>['keyword'=>input('keyword')]])
模板中输出分页 HTML
在视图文件(如 index.html)中,直接使用 $list->render() 渲染分页栏:
立即学习“PHP免费学习笔记(深入)”;
-
{$list->render()}—— 输出带样式的分页 HTML(含上一页、下一页、页码等) - 若需自定义样式,可用
$list->links()配合Bootstrap或layui等主题(需提前配置) - 获取分页信息:
{$list->currentPage()}(当前页)、{$list->lastPage()}(总页数)、{$list->total()}(总记录数)
注意分页数据遍历方式
分页结果对象不是普通数组,需用 foreach 直接遍历:
- ✅ 正确:
{volist name="list" id="vo"} {$vo.name} {/volist} - ❌ 错误:
{$list->toArray()}会丢失分页对象方法,不建议用于渲染列表 - 如需纯数组结构(例如返回 JSON),可用:
['data'=>$list->items(), 'meta'=>['total'=>$list->total(), 'per_page'=>$list->listRows(), 'current_page'=>$list->currentPage()]]



















