您的位置 首页 php

ThinkPHP(TP)框架实现数据分页

在日常的APP或小程序应用中,分页是到处存在的。如在打开APP时,首先引入眼帘的是最新的信息,一般最先打开的信息有几十条,当我们阅读完成后,如果这个时候将手指向下滑动,这个时候APP会重新获取最新的数据,这个过程是重新加载数据;而如果我们在看完第一屏数据后,用手指向上滑动,这个时候APP会在原有的基础上,加载另外一页的数据,并且显示在第一屏数据的下方,这个过程就是我们所说的分页,俗称刷手机。

在TP框架中,分页是很方便实现的,我们可以通过使用page函数或者paginate函数来对已有的数据来实现分页。具体的操作如下:

1.创建控制器和数据模型

在前面的视频中,我们已经创建了User控制器和数据模型,今天我们首先需要创建Plan控制器和Plan数据模型,在VSCode中输入Ctrl+~按钮,打开终端,输入相应的创建命令:

 php think make:controller app\controller\v1\Plan
php think make:model app\model\Plan  

2.创建getPlanList控制器方法

在Plan控制器中,创建getPlanList,目的是为客户端访问服务器提供接口,代码如下:

 //获取plan列表
    public function getPlanList(){
        $res = (new PlanModel())->getPlanData();
        echo json_encode($res) ;
    }  

注意 :在这里,我们首先需要对于引用的数据模型在控制器的前端进行引用,并且调用模型中的方法,从而从模型中顺利获取数据,所以,该控制器的详细代码如下:

 <?php
declare (strict_types = 1);
namespace app\controller\v1;
use app\model\Plan as PlanModel;
use think\Request;
class Plan
{
    //获取plan列表
    public function getPlanList(){
        $res = (new PlanModel())->getPlanData();
        echo json_encode($res) ;
    }
}
  

3.创建getPlanData数据模型方法

在上面的控制器方法中,我们可知调用了名称为getPlanData的数据模型方法。该方法主要是为前端提供数据库中的指定数据。我们在这里做如下的创建:(暂不包含分页代码)

 public function getPlanData(){
        $plan = Plan::select();
        return $plan;
    }  

以上代码是从数据库的数据表“tblWeeksSet”中获取全部数据。但是这里尚未指定数据表,所以这里我们需要单独添加数据表的名称,和上面的方法一起,代码如下

 //指定表名称
    protected $table = 'tblWeeksSet';
    //指定主键
    protected $pk = 'AutoID';
    //获取plan数据
    public function getPlanData(){
        $plan = Plan::select();
        return $plan;
    }  

4.page分页函数和paginate分页函数

在TP框架中,分页函数有两个,分别是page和paginate两个函数,这两个函数功能类似,但是,推荐使用paginate函数为佳。

  • page函数:
  • page(PNo,PNum)函数包含2个参数,分别是PNo页面,PNum一页的数量。如上面的代码,要实现分页,我们可以写出:
 //获取plan数据
 public function getPlanData(){
 $plan = Plan::page(1,10)->select();
 return $plan;
 }  
  • 这里表示将内容分成第一页10条数据,仅此而已!如果用该分页函数确实可以进行相应的分页,但是总体还是比较麻烦,我们需要对总共多少记录,需要分成多少页,是无法得知的,要求我们单独进行另外数据的获取后才能完成,所以该函数并不是最好的选择。
  • paginate(PNum)函数,仅包含每页的记录数量参数。但是该函数的优点是,在分页时,提供完整是分页数据,包括总记录数量(total);每页分页数据量(per_page);当前页(current_page);最后一页(last_page),及当前页的数据(data),分页代码如下:
 //获取plan数据
 public function getPlanData(){
 $plan = Plan::paginate(5);
 return $plan;
 }  
  • 返回数据如下图:

那么,如果要访问第二页,第三页怎么办呢?我们可以在URL中添加page参数,如,原本访问分页接口的是:

   

接下去的其他页面,我们可以这样去访问:

   

也就是说,在后面跟上page参数即可,要访问第几页,就输入相应的数字即可。

总结

TP框架中分页还是非常的方便,通过使用paginate函数,不但可以分页,也可以很方便访问指定的页面。在我们的前端,如果要求翻页,则我们可以使用当前页与最后页进行判断,如果当前页小于最后页,则通过当前页+1的方式作为page参数的值,放在URL中进行访问下一页即可。好,今天内容写到这里,希望朋友们能够喜欢!我们下次见!

文章来源:智云一二三科技

文章标题:ThinkPHP(TP)框架实现数据分页

文章地址:https://www.zhihuclub.com/152527.shtml

关于作者: 智云科技

热门文章

网站地图