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 相关文章推荐
使用PHP维护文件系统
Oct 09 PHP
php下过滤html代码的函数 提高程序安全性
Mar 02 PHP
php连接mssql的一些相关经验及注意事项
Feb 05 PHP
php中error与exception的区别及应用
Jul 28 PHP
PHP+jQuery+Ajax实现分页效果 jPaginate插件的应用
Oct 09 PHP
PHP编写RESTful接口的方法
Feb 21 PHP
php注册登录系统简化版
Dec 28 PHP
Yii2框架dropDownList下拉菜单用法实例分析
Jul 18 PHP
ThinkPHP3.2框架操作Redis的方法分析
May 05 PHP
PHP连接SQL Server的方法分析【基于thinkPHP5.1框架】
May 06 PHP
php中关于换行的实例写法
Sep 26 PHP
详解Laravel服务容器的绑定与解析
Nov 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
Thinkphp 框架扩展之标签库驱动原理与用法分析
2020/04/23 PHP
IE浏览器PNG图片透明效果代码
2008/09/02 Javascript
JSON 编辑器实现代码
2009/12/06 Javascript
使用 JScript 创建 .exe 或 .dll 文件的方法
2011/07/13 Javascript
from表单多个按钮提交用onclick跳转不同action
2014/04/24 Javascript
一个可以增加和删除行的table并可编辑表格中内容
2014/06/16 Javascript
JavaScript实现的一个倒计时的类
2015/03/12 Javascript
教你使用javascript简单写一个页面模板引擎
2015/05/05 Javascript
JS实现两表格里数据来回转移的方法
2015/05/28 Javascript
js下拉选择框与输入框联动实现添加选中值到输入框的方法
2015/08/17 Javascript
学习JavaScript设计模式之代理模式
2016/01/12 Javascript
超详细的JS弹出窗口代码大全
2020/04/18 Javascript
node.js报错:Cannot find module 'ejs'的解决办法
2016/12/14 Javascript
jquery Form轻松实现文件上传
2017/05/24 jQuery
React事件处理的机制及原理
2018/12/03 Javascript
ES6 proxy和reflect的使用方法与应用实例分析
2020/02/15 Javascript
javascript this指向相关问题及改变方法
2020/11/19 Javascript
详解在Python程序中自定义异常的方法
2015/10/16 Python
python装饰器实例大详解
2017/10/25 Python
python下10个简单实例代码
2017/11/15 Python
python3+PyQt5实现拖放功能
2018/04/24 Python
python-docx修改已存在的Word文档的表格的字体格式方法
2018/05/08 Python
python中virtualenvwrapper安装与使用
2018/05/20 Python
Python API 自动化实战详解(纯代码)
2019/06/11 Python
利用Python库Scapy解析pcap文件的方法
2019/07/23 Python
Python hashlib模块实例使用详解
2019/12/24 Python
python lambda函数及三个常用的高阶函数
2020/02/05 Python
Python闭包及装饰器运行原理解析
2020/06/17 Python
百思买美国官网:Best Buy
2016/07/28 全球购物
纽约市的奢华内衣目的地:Anya Lust
2019/08/02 全球购物
娇韵诗香港官网:Clarins香港
2020/08/13 全球购物
仓管岗位职责范本
2014/02/08 职场文书
财产公证书格式
2014/04/10 职场文书
幼儿园中班上学期评语
2014/04/18 职场文书
2014年作风建设剖析材料
2014/10/23 职场文书
Flutter Navigator 实现路由传递参数
2022/04/22 Java/Android