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 相关文章推荐
简单介绍下 PHP5 中引入的 MYSQLI的用途
Mar 19 PHP
php flush类输出缓冲剖析
Oct 19 PHP
PHP 加密与解密的斗争
Apr 17 PHP
解析PHP中常见的mongodb查询操作
Jun 20 PHP
php目录操作实例代码
Feb 21 PHP
linux下安装php的memcached客户端
Aug 03 PHP
PHP自动重命名文件实现方法
Nov 04 PHP
php进行支付宝开发中return_url和notify_url的区别分析
Dec 22 PHP
smarty自定义函数用法示例
May 20 PHP
用PHP将Unicode 转化为UTF-8的实现方法(推荐)
Feb 08 PHP
laravel-admin 中列表筛选方法
Oct 03 PHP
PHP 范围解析操作符(::)用法分析【访问静态成员和类常量】
Apr 14 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 substr 截取字符串出现乱码问题解决方法[utf8与gb2312]
2011/12/16 PHP
功能强大的PHP发邮件类
2016/08/29 PHP
php post换行的方法
2020/02/03 PHP
PHP重载基础知识回顾
2020/09/10 PHP
Js的MessageBox
2006/12/03 Javascript
js substr支持中文截取函数代码(中文是双字节)
2013/04/17 Javascript
jquery 为a标签绑定click事件示例代码
2014/06/23 Javascript
ajax读取数据后使用jqchart显示图表的方法
2015/06/10 Javascript
分享两款带遮罩的jQuery弹出框
2015/12/30 Javascript
理解javascript中的严格模式
2016/02/01 Javascript
js实现鼠标跟随运动效果
2020/08/02 Javascript
webpack学习教程之前端性能优化总结
2017/12/05 Javascript
nodejs 日志模块winston的使用方法
2018/05/02 NodeJs
js使用ajax传值给后台,后台返回字符串处理方法
2018/08/08 Javascript
详解nuxt路由鉴权(express模板)
2018/11/21 Javascript
Vue项目中配置pug解析支持
2019/05/10 Javascript
原生js实现html手机端城市列表索引选择城市
2020/06/24 Javascript
python通过colorama模块在控制台输出彩色文字的方法
2015/03/19 Python
python正则中最短匹配实现代码
2018/01/16 Python
python针对mysql数据库的连接、查询、更新、删除操作示例
2019/09/11 Python
Python基础之高级变量类型实例详解
2020/01/03 Python
python实现四人制扑克牌游戏
2020/04/22 Python
Python中关于logging模块的学习笔记
2020/06/03 Python
python+openCV对视频进行截取的实现
2020/11/27 Python
利用css3制作3D样式按钮实现代码
2013/03/18 HTML / CSS
英国第二大营养品供应商:Vitabiotics
2016/10/01 全球购物
中国排名第一的外贸销售网站:LightInTheBox.com(兰亭集势)
2016/10/28 全球购物
BOSE德国官网:尽探索之力,享音乐之极
2016/12/11 全球购物
Right-on官方网站:日本知名的休闲服装品牌
2019/07/12 全球购物
自主招生自荐信范文
2013/12/04 职场文书
美德少年事迹材料
2014/01/23 职场文书
招商专员岗位职责
2014/02/08 职场文书
社区党务公开实施方案
2014/03/18 职场文书
爱的奉献演讲稿
2014/09/10 职场文书
交通事故死亡赔偿协议书
2014/12/03 职场文书
商铺租房协议书范本
2014/12/04 职场文书