ThinkPHP 3.x 内置分页类 Page 使用指南

阿橙
阿橙
发布时间:2026-10-14| 5人浏览过
原创

本文详细讲解 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();

![分页示例](https://example.com/thinkphp-page-example.jpg)

简要总结

通过 import('ORG.Util.Page') 引入类库,结合 count() 获取总数和 limit() 控制偏移量,即可实现高效的数据分页。掌握这一模式能有效提升列表页面的用户体验。以上就是 ThinkPHP 使用内置 Page 类实现分页的详细内容,更多关于 PHP 框架开发的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。