thinkphp原生态mysql分页_thinkphp6:原生Db::query()查询分页实现

这篇博客介绍了如何在ThinkPHP6框架中利用原生的Db::query()方法进行MySQL分页查询。通过控制器Atest.php的articleList()方法展示了一个实例,包括设置分页参数、计算查询偏移量、执行SQL查询以及利用Bootstrap分页渲染类生成分页链接。尽管这种方法简单实用,但博主指出这种方式存在效率问题,并引用了其他专家的总结来说明其不足。
摘要由CSDN通过智能技术生成

此方法虽然不是最好的,但可以应付差事,实现功能。

假定以下为控制器Atest.php...//省略代码

//引入框架自带分页渲染类

use think\paginator\driver\Bootstrap;

class Atest extends BaseController

{

//报名审核过渡页

function articleList()

{

$pageNo = Request::param('page');

//客户端传过来的分页

$pageNumber = $pageNo ? $pageNo : '0';

if($pageNumber > 0){

$pageNumber_one = $pageNumber-1;

} else {

$pageNumber_one = 0;

}

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

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

$sql = "SELECT ...复杂的SQL脚本... limit $offset,$limit";

$list = Db::query($sql);

//查询的总条数

$sqlTotal = "SELECT count(*) as count_num ...复杂的SQL脚本...";

$counts = Db::query($sqlTotal);

$count = count($counts);//因为获取的总数为数组类型,因此用count计算出总数

//组合分页数据格式

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

$page = $pagernator->render();

// 获取分页显示

View::assign(['list' => $list, 'page' => $page]);

return View::fetch();

}

}

模板调用不变:{$page|raw}

为什么说这种解决办法不好呢?请看下面大佬的总结:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值