首页 » 产品日记 » 正文

TP6使用内置分页paginate限制最大查询数

TP6中使用了paginate 后 limit 就不起作用了。
后来在TP6框架中找到分页函数做了如下修改:
路径:

\vendor\topthink\think-orm\src\db\baseQuery.php

第一处:

$defaultConfig = [
            'query'     => [], //url额外参数
            'total'     => '', //最大数量
            'fragment'  => '', //url锚点
            'var_page'  => 'page', //分页变量
            'list_rows' => 15, //每页数量
        ];

第二处:

if(!empty($config['total'])){
            $total = $config['total'];
            $simple = false;
        }

这样就可以直接使用

paginate(['list_rows'=>50,'total'=>1000,'query'=>$request->param()]);

但是这样还有个问题,按照上面的做法显示1000条记录和20页没错,可是数据库中如果有超出1000条记录,我直接url?page=21依然可以得到后面的数据,想着继续去修改paginate,然后就只是想想。。。。。

换其他的招,也是网上找了一圈之后有高手提出来的,按照数据的ID进行分割数据,如果我有2000条数据,只想展示1000,那么我就把1001的ID先查出来,后面的事就好办了,也不用去做上面的那些修改操作,只需要:

$data = Menft::order('id desc')->limit(1000,1)->select();

然后在后面的查询语句中加入一个条件大于这个Id就可以了

发表评论