ThinkPHP 3.x 内置分页类 Page 使用指南
本文详细讲解 ThinkPHP 内置分页类 Page 的核心用法,涵盖从引入类库、计算总数、构造查询到最终输出分页条的完整流程,并提供基于 ORM 和原生 SQL 的代码示例。
准备条件:引入分页类
在旧版的 ThinkPHP(如 3.x 系列)中,分页功能依赖内置的 Page.class.php 文件。该文件通常位于扩展库目录中。在使用前,必须首先在控制器或逻辑层中引入该类:
import('ORG.Util.Page');完成引入后,即可创建 Page 类的实例。需要注意的是,此方法适用于传统架构项目;如果是较新版本的 ThinkPHP(如 5.0+),推荐直接使用内置的 hinkacadepaginate 或模型的 paginate() 方法。
第1步:获取数据总数
分页类需要知道总记录数才能计算页数。可以通过数据库查询获取符合条件的所有数据行数:
$db = M('abc'); // 实例化数据表
$where = array('id' => '2'); // 定义查询条件
$count = $db->where($where)->count(); // 获取符合条件的总条数第2步:实例化 Page 对象并设置参数
将总条数和每页显示条数传入 Page 构造函数。此时,类内部会自动计算出总页数、当前页偏移量等关键参数:
// 第一个参数为总条数,第二个参数为每页显示行数
$page = new Page($count, 10);第3步:拼接查询限制条件
根据分页类提供的属性,构建 SQL 的 LIMIT 子句或 ThinkPHP 的 limit() 参数。这决定了本次查询返回哪一段数据:
// firstRow: 起始位置, listRows: 每页行数
$limit = $page->firstRow . ',' . $page->listRows;执行查询:两种方式
方式一:使用 ThinkPHP 内置方法(推荐)
利用框架的连贯操作直接获取数据集,代码简洁且安全:
$result = $db->where($where)->limit($limit)->select();
$this->result = $result;方式二:配合原生 SQL 语句
对于复杂查询,可以直接拼接 SQL 字符串并执行:[placeholder]
$Model = new Model();
$sql = "SELECT id,name FROM abc WHERE " . $where . " LIMIT " . $page->firstRow . "," . $page->listRows;
$result = $Model->query($sql);
$this->result = $result;处理与展示结果
如果需要先对数据进行二次处理(如排序、重组),可以在赋值给模板变量前进行操作:
$res = abc($result); // 自定义处理方法
$this->result = $res;最后,在视图层渲染分页导航条。调用 show() 方法可生成包含页码、跳转功能的 HTML 代码:
// 该方法通常直接在模板中 {$page} 输出,或在控制器中赋值
// 例如:$this->display();
简要总结
通过 import('ORG.Util.Page') 引入类库,结合 count() 获取总数和 limit() 控制偏移量,即可实现高效的数据分页。掌握这一模式能有效提升列表页面的用户体验。以上就是 ThinkPHP 使用内置 Page 类实现分页的详细内容,更多关于 PHP 框架开发的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









