thinkphp5框架前后端分离项目实现分页功能的方法分析


Posted in PHP onOctober 08, 2019

本文实例讲述了thinkphp5框架前后端分离项目实现分页功能的方法。分享给大家供大家参考,具体如下:

方法一

利用tp5提供的paginate方法实现自动分页

参数

page第几页,paginate分页方法会自动获取

size  每页数量

代码

/**
* Notes:消费记录
* Date: 2019/6/25
* Time: 15:43
* @param Request $request
* @return \think\response\Json
*/
public function getMyConsumeLog(Request $request)
{
    global $_W;
    $size = $request->param('size', 6);
    $list = $this->model->getListByMid($_W['user']['id'],$size);
    return json(['data' => $list, 'error' => 0, 'message' => 'success']);
}
public function getListByMid($mid,$size = 10){
    $res = $this
      ->alias('c')
      ->field('c.*,b.book_name,b.book_flash,s.section_title')
      ->leftJoin('booksection s','c.chapter_id = s.id')
      ->leftJoin('book b','s.book_id = b.id')
      ->where('c.mid',$mid)
      ->order('c.id desc')
      ->paginate($size);
    return $res;
}

返回数据

{
    "data": {
        "total": 1,
        "per_page": 1,
        "current_page": 1,
        "last_page": 1,
        "data": [
            {
                "id": 105,
                "mid": 55,
                "book_id": 31,
                "chapter_id": 46046,
                "score": 27,
                "create_time": 1561447448,
                "book_name": "桃运村支书",
                "book_flash": "https://cdnxiaoshuo.t.com/FiO6TM0N4kpzKB7tqrDko64ZS4H4",
                "section_title": "第29章 康庄大道"
            }
        ]
    },
    "error": 0,
    "message": "success"
}

方法二

利用limit方法

$curr_page = $request->param('page', 1);
    $size = $request->param('size', 6);
$list = $consume_model->getListByWhere($curr_page, $size, $where);
    $num = $consume_model->getListByWhereCount($where);
    return json(['data' => $list,'num' => $num,'error' => 0, 'message' => 'success']);
public function getListByWhere($curr_page,$limit = 10,$where = null){
    $res = $this
      ->alias('c')
      ->field('c.*,b.book_name,s.section_title')
      ->leftJoin('booksection s','c.chapter_id = s.id')
      ->leftJoin('book b','s.book_id = b.id')
      ->where($where)
      ->order('c.id desc')
      ->limit($limit*($curr_page - 1),$limit)
      ->select()
      ->toArray();
    return $res;
}
public function getListByWhereCount($where = null){
    $count = $this
      ->alias('c')
      ->where($where)
      ->count();
    return $count;
}

返回值

{
    "data": [
        {
            "id": 2,
            "mid": 4,
            "book_id": 4,
            "chapter_id": 22,
            "score": 30,
            "create_time": 0,
            "book_name": "复仇者联盟I",
            "section_title": "第11章  你是睡"
        },
        {
            "id": 1,
            "mid": 4,
            "book_id": 29,
            "chapter_id": 34,
            "score": 20,
            "create_time": 1598999,
            "book_name": "复仇者联盟II",
            "section_title": "第11章  你是睡"
        }
    ],
    "num": 2,
    "total_coin": 50,
    "error": 0,
    "message": "success"
}

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
一个ubbcode的函数,速度很快.
Oct 09 PHP
PHP 采集程序 常用函数
Dec 18 PHP
php读取javascript设置的cookies的代码
Apr 12 PHP
PHP在字符断点处截断文字的实现代码
Apr 21 PHP
php中is_null,empty,isset,unset 的区别详细介绍
Apr 28 PHP
彻底删除thinkphp3.1案例blog标签的方法
Dec 05 PHP
PHP生成压缩文件实例
Feb 07 PHP
php使用substr()和strpos()联合查找字符串中某一特定字符的方法
May 12 PHP
Laravel中任务调度console使用方法小结
May 07 PHP
php curl上传、下载、https登陆实现代码
Jul 23 PHP
如何在PHP环境中使用ProtoBuf数据格式
Jun 19 PHP
PHP延迟静态绑定使用方法实例解析
Sep 05 PHP
PHP7 安装event扩展的实现方法
Oct 08 #PHP
thinkphp5+layui实现的分页样式示例
Oct 08 #PHP
调试php程序的简单步骤
Oct 04 #PHP
用php定义一个数组最简单的方法
Oct 04 #PHP
php输出文字乱码的解决方法
Oct 04 #PHP
PHP 多进程与信号中断实现多任务常驻内存管理实例方法
Oct 04 #PHP
使用laravel和ajax实现整个页面无刷新的操作方法
Oct 03 #PHP
You might like
开发大型 PHP 项目的方法
2007/01/02 PHP
Sublime里直接运行PHP配置方法
2014/11/28 PHP
PHP封装CURL扩展类实例
2015/07/28 PHP
PHP实现的oracle分页函数实例
2016/01/25 PHP
Laravel框架自定义分页样式操作示例
2020/01/26 PHP
javascript 操作文件 实现方法小结
2009/07/02 Javascript
jQuery 入门级学习笔记及源码
2010/01/22 Javascript
一个可绑定数据源的jQuery数据表格插件
2010/07/17 Javascript
2010年最佳jQuery插件整理
2010/12/06 Javascript
基于JavaScript如何实现私有成员的语法特征及私有成员的实现方式
2015/10/28 Javascript
jQuery插件HighCharts绘制2D饼图效果示例【附demo源码下载】
2017/03/21 jQuery
基于$.ajax()方法从服务器获取json数据的几种方式总结
2018/01/31 Javascript
微信小程序实现美团菜单
2018/06/06 Javascript
JS判断浏览器类型与操作系统的方法分析
2020/04/30 Javascript
使用React代码动态生成栅格布局的方法
2020/05/24 Javascript
[18:32]DOTA2 HEROS教学视频教你分分钟做大人-谜团
2014/06/12 DOTA
Python中不同进制的语法及转换方法分析
2016/07/27 Python
python中字符串比较使用is、==和cmp()总结
2018/03/18 Python
Python使用OpenCV进行标定
2018/05/08 Python
python实现简单flappy bird
2018/12/24 Python
关于torch.optim的灵活使用详解(包括重写SGD,加上L1正则)
2020/02/20 Python
Python3之外部文件调用Django程序操作model等文件实现方式
2020/04/07 Python
如何提高python 中for循环的效率
2020/04/15 Python
Numpy中的数组搜索中np.where方法详细介绍
2021/01/08 Python
新西兰廉价汽车租赁:Snap Rentals
2018/09/14 全球购物
建筑工程专业学生的自我评价
2013/12/25 职场文书
校园创业策划书
2014/01/14 职场文书
优秀党员主要事迹
2014/01/19 职场文书
幼儿园儿童节主持词
2014/03/21 职场文书
个人社会实践自我鉴定
2014/03/24 职场文书
初中班主任评语
2014/04/24 职场文书
少年犯观后感
2015/06/11 职场文书
Golang 正则匹配效率详解
2021/04/25 Golang
openstack中的rpc远程调用的方法
2021/07/09 Python
简单聊聊TypeScript只读修饰符
2022/04/06 Javascript
vue3 自定义图片放大器效果的示例代码
2022/07/23 Vue.js