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 相关文章推荐
mysql下创建字段并设置主键的php代码
May 16 PHP
PHP中is_file不能替代file_exists的理由
Mar 04 PHP
PHP常用的缓存技术汇总
May 05 PHP
PHP 正则表达式常用函数
Aug 17 PHP
php中用memcached实现页面防刷新功能
Aug 19 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
Sep 24 PHP
详解PHP实现异步调用的4种方法
Mar 14 PHP
Laravel中使用FormRequest进行表单验证方法及问题汇总
Jun 19 PHP
PHP面向对象程序设计OOP继承用法入门示例
Dec 27 PHP
详解PHP中的序列化、反序列化操作
Mar 21 PHP
PHP实现求连续子数组最大和问题2种解决方法
Dec 26 PHP
php中Swoole的热更新实现代码实例
Mar 04 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 MemCached 高级缓存应用代码
2010/08/05 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-3 代码组织和重用2
2011/07/03 PHP
在smarty中调用php内置函数的方法
2013/02/07 PHP
PHP中的use关键字概述
2014/07/23 PHP
PHP序列化操作方法分析
2016/09/28 PHP
PHP预定义超全局数组变量小结
2018/08/20 PHP
javascript两段代码,两个小技巧
2010/02/04 Javascript
Jquery获取复选框被选中值的简单方法
2013/07/04 Javascript
js实现弹出窗口、页面变成灰色并不可操作的例子分享
2014/05/10 Javascript
详解JavaScript基于面向对象之创建对象(1)
2015/12/10 Javascript
基于jquery实现省市区三级联动效果
2015/12/25 Javascript
深入解析JavaScript中函数的Currying柯里化
2016/03/19 Javascript
如何检测JavaScript的各种类型
2016/07/30 Javascript
使用JQuery选择HTML遍历函数的方法
2016/09/17 Javascript
用jQuery旋转插件jqueryrotate制作转盘抽奖
2017/02/10 Javascript
php输出全部gb2312编码内的汉字方法
2017/03/04 Javascript
Angular 4 依赖注入学习教程之FactoryProvider的使用(四)
2017/06/04 Javascript
判断div滑动到底部的scroll实例代码
2017/11/15 Javascript
setTimeout时间设置为0详细解析
2018/03/13 Javascript
layui按条件隐藏表格列的实例
2019/09/19 Javascript
vue 实现特定条件下绑定事件
2019/11/09 Javascript
vue 使用rules对表单字段进行校验的步骤
2020/12/25 Vue.js
Python多线程扫描端口代码示例
2018/02/09 Python
Python图像处理之简单画板实现方法示例
2018/08/30 Python
python 批量下载bilibili视频的gui程序
2020/11/20 Python
HTML5资源预加载(Link prefetch)详细介绍(给你的网页加速)
2014/05/07 HTML / CSS
美国在线轮胎零售商:SimpleTire
2019/04/08 全球购物
国际商务专业学生个人的自我评价
2013/09/28 职场文书
党员思想汇报范文
2013/12/30 职场文书
餐饮采购员岗位职责
2014/03/15 职场文书
《鹬蚌相争》教学反思
2014/04/22 职场文书
文明美德伴我成长演讲稿
2014/05/12 职场文书
学生安全责任书范本
2014/07/24 职场文书
初中体育课教学反思
2016/02/16 职场文书
CSS3 天气图标动画效果
2021/04/06 HTML / CSS
Win11怎么跳过联网验机 ?Win11跳过联网验机激活教程
2022/04/05 数码科技