之前使用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); }