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获取mysql版本的几种方法小结
Mar 25 PHP
简单示例AJAX结合PHP代码实现登录效果代码
Jul 25 PHP
PHPMYADMIN 简明安装教程 推荐
Mar 07 PHP
PHP人民币金额数字转中文大写的函数代码
Feb 27 PHP
PHP实现的登录,注册及密码修改功能分析
Nov 25 PHP
PHP用PDO如何封装简单易用的DB类详解
Jul 30 PHP
PHP实现APP微信支付的实例讲解
Feb 10 PHP
PHP实现基于PDO扩展连接PostgreSQL对象关系数据库示例
Mar 31 PHP
yii2 url重写并隐藏index.php方法
Dec 10 PHP
PHP内置函数生成随机数实例
Jan 18 PHP
php如何把表单内容提交到数据库
Jul 08 PHP
PHP使用PDO、mysqli扩展实现与数据库交互操作详解
Jul 20 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
全国FM电台频率大全 - 31 新疆维吾尔族自治区
2020/03/11 无线电
杏林同学录(九)
2006/10/09 PHP
工厂模式在Zend Framework中应用介绍
2012/07/10 PHP
优化PHP代码技巧的小结
2013/06/02 PHP
ini_set的用法介绍
2014/01/07 PHP
PHP随机数 C扩展随机数
2016/05/04 PHP
php单链表实现代码分享
2016/07/04 PHP
CI(CodeIgniter)框架视图中加载视图的方法
2017/03/24 PHP
JQuery的Alert消息框插件使用介绍
2010/10/09 Javascript
利用函数的惰性载入提高javascript代码执行效率
2014/05/05 Javascript
14款NodeJS Web框架推荐
2014/07/11 NodeJs
Jquery 实现table样式的设定
2015/01/28 Javascript
jQuery实现仿QQ空间装扮预览图片的鼠标提示效果代码
2015/10/30 Javascript
javascript html实现网页版日历代码
2016/03/08 Javascript
JavaScript trim 实现去除字符串首尾指定字符的简单方法
2016/12/27 Javascript
assert()函数用法总结(推荐)
2017/01/25 Javascript
JavaScript观察者模式(publish/subscribe)原理与实现方法
2017/03/30 Javascript
bootstrap表格内容过长时用省略号表示的解决方法
2017/11/21 Javascript
vue下拉列表功能实例代码
2018/04/08 Javascript
vue封装可复用组件confirm,并绑定在vue原型上的示例
2019/10/31 Javascript
vue实现移动端触屏拖拽功能
2020/08/21 Javascript
[53:15]Newbee vs Pain 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
用Python的urllib库提交WEB表单
2009/02/24 Python
Python命名空间的本质和加载顺序
2018/12/17 Python
Python Django的安装配置教程图文详解
2019/07/17 Python
Django ORM 聚合查询和分组查询实现详解
2019/08/09 Python
Giglio俄罗斯奢侈品购物网:男士、女士、儿童高级时装
2018/07/27 全球购物
德国在线香料制造商:Gewürzland
2020/03/10 全球购物
中层竞聘演讲稿
2014/01/09 职场文书
《三袋麦子》教学反思
2014/03/02 职场文书
2014年班组建设工作总结
2014/12/01 职场文书
2014年中职班主任工作总结
2014/12/16 职场文书
焦裕禄纪念馆观后感
2015/06/09 职场文书
小学数学新课改心得体会
2016/01/22 职场文书
《圆明园的毁灭》教学反思
2016/02/16 职场文书
SQL基础查询和LINQ集成化查询
2022/01/18 MySQL