ThinkPHP 3.2.3 Pager分页

时间:2023-01-15 04:06:40

不是很喜欢TP的分页类,因为生成的分页url感觉有点不好理解,例如访问路径xxxx/home/show.html,在模板输出分页后,例如产生了页码,页码链接的路径会变成xxxx/home/show/p/页码.html。本人不是很喜欢这种路径,不过也无关大雅。用久了就好了。

            $sql = " SELECT f.*,d.dname,FROM_UNIXTIME(f.createtime,'%Y-%m-%d') createdate, "		  ." FROM_UNIXTIME(f.updatetime,'%Y-%m-%d') updatedate "
                  ." FROM ".C('DB_PREFIX')."file f LEFT JOIN ".C('DB_PREFIX')."dir d ON f.did = d.did  where 1=1 ";
            if(!empty($post['filename'])){
                $sql .= " and f.filename like '%".$post['filename']."%' ";
            }
            if(!empty($post['did'])){
                $sql .= " and f.did='".$post['did']."' ";
            }
            //$result = $file->query($sql);
            $count = count($file->query($sql));
            $page = new \Think\Page($count , PAGE_SIZE);
            //$page->parameter = $post['did']; //此处的row是数组,为了传递查询条件
            $page->setConfig('first','首页');
            $page->setConfig('prev','上一页');
            $page->setConfig('next','下一页');
            $page->setConfig('last','尾页');
            $page -> setConfig('header','<span class="rows">共<b>%TOTAL_ROW%</b>条记录 第<b>%NOW_PAGE%</b>页/共<b>%TOTAL_PAGE%</b>页</span>');
            $page -> setConfig('theme','%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% %HEADER% ');
            $show = $page->show();
            $sql .= " LIMIT ".$page->firstRow.",".$page->listRows;
            $result = $file->query($sql);

如上面代码,使用的是query方法查询自定义的sql,page初始化时需要传入2个参数,sql的数据总条数,分页条数;通过setConfig函数来进行相关的page对象定义,show方法产生分页的html,$pager提供了firestRow和lastRows这2个属性来支持分页,可以通过拼接sql或者model提供的limit()函数来进行分页查询。