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实现MVC开发得最简单的方法――模型
Apr 10 PHP
mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
Apr 24 PHP
php 数组的一个悲剧?
May 11 PHP
php 解压rar文件及zip文件的方法
May 05 PHP
php中instanceof 与 is_a()区别分析
Mar 03 PHP
PHP内核探索之变量
Dec 22 PHP
Symfony2学习笔记之控制器用法详解
Mar 17 PHP
ThinkPHP3.2.1图片验证码实现方法
Aug 19 PHP
PHP实践教程之过滤、验证、转义与密码详解
Jul 24 PHP
PHP Socket网络操作类定义与用法示例
Aug 30 PHP
PHP APP微信提现接口代码
Sep 30 PHP
实例介绍PHP删除数组中的重复元素
Mar 03 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文件上传原理简单分析
2011/05/29 PHP
选择PHP作为网站开发语言的原因分享
2012/01/03 PHP
php数组中包含中文的排序方法
2014/06/03 PHP
教您去掉ie网页加载进度条的方法
2010/12/09 Javascript
使用jquery实现select添加实现后台权限添加的效果
2011/05/28 Javascript
JavaScript及jquey实现多个数组的合并操作
2014/09/06 Javascript
jquery中添加属性和删除属性
2015/06/03 Javascript
JS+CSS实现分类动态选择及移动功能效果代码
2015/10/19 Javascript
Bootstrap所支持的表单控件实例详解
2016/05/16 Javascript
js H5 canvas投篮小游戏
2016/08/18 Javascript
Jquery给当前页或者跳转后页面的导航栏添加选中后样式的实例
2016/12/08 Javascript
详解vue.js组件化开发实践
2016/12/14 Javascript
js点击任意区域弹出层消失实现代码
2016/12/27 Javascript
js图片轮播手动切换特效
2017/01/12 Javascript
详解Nodejs之npm&package.json
2017/06/15 NodeJs
关于 angularJS的一些用法
2017/11/29 Javascript
vue中post请求以a=a&b=b 的格式写遇到的问题
2018/04/27 Javascript
原生JS实现动态加载js文件并在加载成功后执行回调函数的方法
2020/12/30 Javascript
vuex的使用步骤
2021/01/06 Vue.js
安装ElasticSearch搜索工具并配置Python驱动的方法
2015/12/22 Python
python实现list由于numpy array的转换
2018/04/04 Python
Python多进程multiprocessing.Pool类详解
2018/04/27 Python
Python Web框架之Django框架文件上传功能详解
2019/08/16 Python
基于python全局设置id 自动化测试元素定位过程解析
2019/09/04 Python
python+OpenCV实现图像拼接
2020/03/05 Python
Python docutils文档编译过程方法解析
2020/06/23 Python
PyTorch的torch.cat用法
2020/06/28 Python
Python logging日志模块 配置文件方式
2020/07/12 Python
澳大利亚领先的皮肤诊所:Skin Matrix(抗衰老、痤疮专家、药妆护肤)
2018/05/20 全球购物
洛佩桑酒店官方网站:Lopesan Hotels
2019/04/15 全球购物
本科生求职信
2014/06/17 职场文书
感谢信的格式
2015/01/21 职场文书
小区保洁员岗位职责
2015/04/10 职场文书
python编写函数注意事项总结
2021/03/29 Python
基于python的matplotlib制作双Y轴图
2021/04/20 Python
bose降噪耳机音能消除人声吗
2022/04/19 数码科技