think php 数据分页,接口数据使用ThinkPHP5的自定义分页

本文介绍了在ThinkPHP5框架中如何对请求的接口数据进行分页,详细解析了数据库分页流程,并提供了模拟接口请求的示例代码,通过Bootstrap类实现分页效果,包括设置查询参数、URL路径和引入CSS样式。
摘要由CSDN通过智能技术生成

tp程序自带了分页的功能,用起来很是方便,特别是默认情况下直接连样式都写好了。非常的省心。但这只是对于数据库操作而言。如果我们想要对请求的接口数据进行分页,那么该如何使用paginate方法呢?

修改说明

增加了注释,参考附录代码。

此代码的使用场景:在php中curl请求带分页的接口中使用

解决html显示异常,模板中使用raw方法

知其然

我们首先来查看tp数据的分页流程是怎么样的。先写一个数据库分页的代码

$page = Db::name("null")

->paginate();

$page->render();

使用ctrl+鼠标左键,进入paginate方法中。

...

/** @var Paginator $class */

$class = false !== strpos($config['type'], '\\') ? $config['type'] : '\\think\\paginator\\driver\\' . ucwords($config['type']);

$page = isset($config['page']) ? (int) $config['page'] : call_user_func([

$class,

'getCurrentPage',

], $config['var_page']);

$page = $page < 1 ? 1 : $page;

$config['path'] = isset($config['path']) ? $config['path'] : call_user_func([$class, 'getCurrentPath']);

if (!isset($total) && !$simple) {

$options = $this->getOptions();

unset($this->options['order'], $this->options['limit'], $this->options['page'], $this->options['field']);

$bind = $this->bind;

$total = $this->count();

$results = $this->options($options)->bind($bind)->page($page, $listRows)->select();

} elseif ($simple) {

$results = $this->limit(($page - 1) * $listRows, $listRows + 1)->select();

$total = null;

} else {

$results = $this->page($page, $listRows)->select();

}

return $class::make($results, $listRows, $page, $total, $simple, $config);

这里只粘贴了重要代码。我们看最后一句,$class 的实例化在上面代码块的第一行,这个类就是分页驱动类。调用了make方法。我们再跟踪进make方法进行查看

public static function make($item

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值