thinkphp6:原生Db::query()查询分页实现
2022-11-24 11:10:29
173
{{single.collect_count}}

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

假定以下为控制器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}

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

回帖
全部回帖({{commentCount}})
{{item.user.nickname}} {{item.user.group_title}} {{item.friend_time}}
{{item.content}}
{{item.comment_content_show ? '取消' : '回复'}} 删除
回帖
{{reply.user.nickname}} {{reply.user.group_title}} {{reply.friend_time}}
{{reply.content}}
{{reply.comment_content_show ? '取消' : '回复'}} 删除
回帖
收起
没有更多啦~
{{commentLoading ? '加载中...' : '查看更多评论'}}