jcydd

之前使用tp5的分页paginate类时只用到了第一个参数,也就是每页显示多少行

今天又仔细看了下手册和paginate类,发现paginate可传入的参数有很多,可以满足更多需求

比如可以指定分页的数据,可以使用重写的分页类等。。。

下面是tp5.1的分页类

 /**
     * 分页查询
     * @access public
     * @param  int|array $listRows 每页数量 数组表示配置参数
     * @param  int|bool  $simple   是否简洁模式或者总记录数
     * @param  array     $config   配置参数
     *                            page:当前页,
     *                            path:url路径,
     *                            query:url额外参数,
     *                            fragment:url锚点,
     *                            var_page:分页变量,
     *                            list_rows:每页数量
     *                            type:分页类名
     * @return \think\Paginator
     * @throws DbException
     */
    public function paginate($listRows = null, $simple = false, $config = [])
    {
        if (is_int($simple)) {
            $total  = $simple;
            $simple = false;
        }

        $paginate = Container::get(\'config\')->pull(\'paginate\');

        if (is_array($listRows)) {
            $config   = array_merge($paginate, $listRows);
            $listRows = $config[\'list_rows\'];
        } else {
            $config   = array_merge($paginate, $config);
            $listRows = $listRows ?: $config[\'list_rows\'];
        }

        /** @var Paginator $class */
        $class = false !== strpos($config[\'type\'], \'\\\') ? $config[\'type\'] : \'\\think\\paginator\\driver\\\' . ucwords($config[\'type\']);
        $page  = isset($config[\'page\']) ? (int) $config[\'page\'] : call_user_func([
            $class,
            \'getCurrentPage\',
        ], $config[\'var_page\']);

        $page = $page < 1 ? 1 : $page;

        $config[\'path\'] = isset($config[\'path\']) ? $config[\'path\'] : call_user_func([$class, \'getCurrentPath\']);

        if (!isset($total) && !$simple) {
            $options = $this->getOptions();

            unset($this->options[\'order\'], $this->options[\'limit\'], $this->options[\'page\'], $this->options[\'field\']);

            $bind    = $this->bind;
            $total   = $this->count();
            $results = $this->options($options)->bind($bind)->page($page, $listRows)->select();
        } elseif ($simple) {
            $results = $this->limit(($page - 1) * $listRows, $listRows + 1)->select();
            $total   = null;
        } else {
            $results = $this->page($page, $listRows)->select();
        }

        $this->removeOption(\'limit\');
        $this->removeOption(\'page\');

        return $class::make($results, $listRows, $page, $total, $simple, $config);
    }

 

分类:

技术点:

相关文章: