分页offset格式_Thinkphp5 原生sql分页操作

一、问题描述:我们用Thinkphp5开发功能的时候框架自带的查询方法不太好使用类似于连接查询和复制的sql语句,这是我们就需要用到原生sql语句查询数据。但是使用原生sql语句查询的方式就无法使用框架自带的通过实例化数据表db()来调用分页函数。因此我们就要其他的方式来实现分页功能了。

二、实现方法:

1.引入框架自带的分类方法类Bootstrap:use thinkpaginatordriverBootstrap;

ea4905a8def45b1b489f0b3032ed0fd5.png

2.获取要分页的数据参数:获取当前页码、每页显示条数、查询偏移值、分页数据列表、分页的总条数,然后把参数传递到Bootstrap类中。

public function technique(){

$pageNumber = input('page') ? input('page') : '0';//客户端传过来的分页

if($pageNumber > 0){

$pageNumber_one = $pageNumber-1;

} else {

$pageNumber_one = 0;

}

$limit = 5;//每页显示条数

$offset = $pageNumber_one * $limit;//查询偏移值

//查询数据

$sql = "select a.id,a.parent_id,a.title,a.abstract,a.browse_num,a.evaluate_num,a.love_num,a.thumbnail,a.update_time,b.title as article_type

from bl_article as a

left join bl_article_type as b

on a.parent_id=b.id

limit $offset,$limit

";

$list = db()->query($sql);

//查询的总条数

$sql = "select count(*) as count_num

from bl_article as a

left join bl_article_type as b

on a.parent_id=b.id

";

$counts = db()->query($sql);

$count = $counts['0']['count_num'];

//组合分页数据格式

$pagernator = Bootstrap::make($list,$limit,$pageNumber,$count,false,['path'=>Bootstrap::getCurrentPath(),'query'=>request()->param()]);

$page = $pagernator->render();

$this->assign('article_data',$list);

$this->assign('page', $page);

return $this->fetch('Index/technique');

}

6c0f88adb227b458e98a97daa433d0c7.png

3.前端页面渲染出数据列表和分页就可以了。

53f8b77153fca64b19603f29770bd73b.png

4.效果图:

143eae03fd32c54fe9d1a7fa671e1e58.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值