thinkphp8 中 paginate() 分页页码错乱通常是因为未正确设置当前页码或数据量不足导致。解决方法是显式调用 currentpage() 获取当前页,并确保传入 paginate() 的数据源已排序且数量大于每页条数。若数据少于每页限制,thinkphp8 会返回单页结果,此时 lastpage() 为 1,可能导致前端显示异常。

paginate() 在数据不足时如何返回
当查询结果总数小于每页设定的条数时,paginate() 不会报错,而是直接返回所有数据并标记为第一页。此时 lastPage() 方法返回 1,hasMore() 返回 false。前端若依赖 lastPage() 渲染分页控件,可能只显示一页或无分页器。
修复 Core bailout 状态损坏安全问题,以及 BZ2、DOM、PDO、Opcache/JIT 内存与执行错误,改进 Unicode 字素处理、URL 解析、TLS 流状态、信号分发及会话错误处理。

$query = Db::name('user')->where('status', 1);$total = $query->count();$perPage = 10;$list = $query->order('id', 'desc')->paginate($perPage);$data = [ 'current_page' => $list->currentPage(), 'last_page' => $list->lastPage(), 'total' => $list->total(), 'per_page' => $list->perPage(), 'items' => $list->items()];echo json_encode($data, JSON_UNESCAPED_UNICODE);预期输出(假设数据库有5条满足条件的记录):
{


















