thinkphp7中通过user::where()->paginate(15)自动实现分页,返回paginator对象,需在模板用{$users->render|raw}输出页码html,且须配置正确表名与数据库连接以避免错误。

在ThinkPHP7中实现分页查询,需借助内置的Paginator类和数据库查询构造器,确保前端展示页码、每页条数可控,且SQL执行效率不因OFFSET过大而下降。
配置数据库连接与模型基础
打开config/database.php,确认默认连接已启用MySQL驱动,并设置'deploy' => 0关闭多库部署模式——否则分页时可能报错找不到连接实例。
在app/model/User.php中定义模型类,继承think\Model,并显式声明protected $table = 'user';——若表名非复数或含下划线,不设此属性会导致查询生成错误的表名。
控制器中调用分页方法
方法一:使用paginate()快捷分页
在控制器方法内写:$users = User::where('status', 1)->paginate(15);
这行代码会自动获取当前页码(从GET参数page读取)、计算总条数、生成LIMIT+OFFSET子句,并封装为Paginator对象返回。注意:若未传page参数,默认取第1页,但page=0会被强制转为page=1,不会报错也不会跳转。
方法二:手动控制分页参数
先获取当前页:$page = input('get.page/d', 1); → 再查总数:$total = User::where('status', 1)->count(); → 最后查数据:$list = User::where('status', 1)->limit(($page - 1) * 15, 15)->select();
【必须调用render()才能生成页码HTML】:将$users->render()赋值给模板变量,否则模板里{$users->render}为空字符串。
模板中渲染分页HTML
在视图文件(如view/index.html)中直接输出:{$users->render|raw}。
ThinkPHP7默认使用Bootstrap 4样式,若项目未引入Bootstrap,页码将无CSS渲染,仅显示纯文本链接;此时可自定义分页模板,在config/pagination.php中修改'view' => 'pagination::default'为自定义路径,或直接在模板中用{:paginate($users, ['type'=>'bootstrap'])}切换样式类型。
若需隐藏“共N条”文字,可在paginate()第二个参数传入['show_total'=>false]。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











