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

二、实现方法:

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

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');

}

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

4.效果图:

分页offset格式_Thinkphp5 原生sql分页操作相关推荐

  1. 分页offset格式_MySQL中limit分页查询性能问题分析

    MySQL Limit 语法格式: SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset 分页查询时,我们会在 LIMIT 后面传 ...

  2. 记一次SpringDateJpa 使用原生sql 分页查询

    jpa 如果使用原生sql如何分页查询呢? @GetMapping("/getInfo")public Result getOpenId() throws Exception{Si ...

  3. 完美的 jpa 多表 原生sql 分页查询

    多表分页查询,强烈推荐原生sql 一般需要两个方法,一个查条数,一个查当前页数据 @Query(value = "" +"" +" select &q ...

  4. django使用mysql原始语句,Django中使用mysql数据库并使用原生sql语句操作

    Django自身默认使用sqlite3这个轻量级的数据库,但是当我们开发网站时,sqlite3就没有mysql好,sqlite3适合一些手机上开发使用的数据库. 准备的软件 mysql数据库,版本5. ...

  5. django mysql sql语句_Django中使用mysql数据库并使用原生sql语句操作

    Django自身默认使用sqlite3这个轻量级的数据库,但是当我们开发网站时,sqlite3就没有mysql好,sqlite3适合一些手机上开发使用的数据库. 准备的软件 mysql数据库,版本5. ...

  6. php 原生sql 分页查询,Laravel框架执行原生SQL语句及使用paginate分页的方法

    本文实例讲述了Laravel框架执行原生SQL语句及使用paginate分页的方法.分享给大家供大家参考,具体如下: 1.运行原生sql public function getList($data){ ...

  7. 左外连接的sql语句_Django数据库连接和使用原生sql语句

    在操作数据库之前,首先先要连接数据库.这里我们以配置 MySQL 为例来讲解. Django连接数据库,不需要单独的创建一个连接对象.只需要在 settings.py 文件中做好数据库相关的配置就可以 ...

  8. django执行原生SQL语句

    1.原生SQL用法概述 django可以执行原生SQL语句,主要分读和写两类,用法如下: 读(查):xxxModel.object.raw() 写(增删改):connection.cursor() 2 ...

  9. Hibernate→HQL、query.list()返回数据类型、查询相关语句、分页、原生SQL、@注解、持久化对象状态及生命周期、一多关系、继承映射关系、逆向工程

    HQL Query实例与表 session通用工具类 Query对象 from 类→List<类>接收 映射类 仅查询商品 查询商品及所在商家 别名 返回数据类型定义 Iterator接收 ...

最新文章

  1. SSH免密登录(内含批量配置脚本)
  2. ccf_201712-2
  3. html缓慢下拉,html - 列表下拉导航-适用于除野生动物园之外的所有浏览器。 间隔开并缓慢 - 堆栈内存溢出...
  4. 作者:刘勇,山东农业大学教授、博士生导师。
  5. 数据结构期末复习之插入排序
  6. 【转载】Kali-linux安装之后的简单设置
  7. fir数字滤波器设计与软件实现_基于FPGA低通滤波器的FIR的设计
  8. Qt工程pro文件的简单配置(尤其是第三方头文件和库)
  9. 【golang-GUI开发】struct tags系统(一)
  10. 所有锁的unlock要放到try{}finally{}里,不然发生异常返回就丢了unlock了
  11. 20190901每日一句 那就从现在开始吧,让生命变得更有价值
  12. AVG游戏《裂缝》策划案
  13. ev3pid巡线_基于LEGO使用PID算法进行单光巡线机器人设计的心得体会
  14. Xmind8 绿色版安装教程
  15. daniel powter
  16. Python 斐波那契数
  17. 采样开关的作用计算机控制,计算机控制系统复习要点
  18. 中国消防安装和维保市场预测及投资战略报告(2021版)
  19. 秒会pygame:究极无敌闪烁小球与碰壁反弹程序(完整代码)
  20. 苹果7防水吗_苹果手机防水是真的吗?事实很残酷,但还可以抢救一下

热门文章

  1. 腾讯云TStack,带着“数据中心”游云南
  2. 俞栋谈腾讯AI Lab进展;腾讯AI加速器第二期开始招募
  3. 听一听蚂蚁金服机器学习算法中台周俊谈共享智能技术实践:如何降低数据共享的难度?
  4. npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! iview-admin@2.0.0 dev: `vue-cli-service serve
  5. javaweb----三层架构
  6. leetcode 453,462. Minimum Moves to Equal Array Elements I, II | 453, 462. 最少移动次数使数组元素相等(图解)
  7. 【Java】Java中的异常处理:何时抛出异常,何时捕获异常?
  8. MIPS指令以及数据通路
  9. java中CyclicBarrier的使用
  10. qsettings删除注册表_Qt QSettings读取注册表和ini | 学步园