Skip to content
On this page

分页

Sutando 内置了对基于偏移的分页的支持。 您可以通过链接 paginate 方法对查询结果进行分页。

paginate 方法接受要获取的行作为第一个参数,将页码作为第二个参数。 在内部,我们执行一个额外的查询来计算总行数。

基本用法

js
const users = await db.table('users')
  .where('vote', '>', 1)
  .paginate(15, 2); // Paginator

const users = await User.query()
  .where('vote', '>', 1)
  .paginate(15); // Paginator

const users = await db.table('users')
  .where('vote', '>', 1)
  .forPage(2, 15)
  .get(); // Array

const users = await User.query()
  .where('vote', '>', 1)
  .forPage(1, 15)
  .get(); // Collection

users.map(user => {
  //
});

paginate 方法返回一个 Paginator 实例。 它保存分页的元数据,以及获取的行。

每个分页器实例通过以下方法提供额外的分页信息:

方法描述
paginator.count()获取当前页的数据总数
paginator.currentPage()获取当前页码
paginator.hasMorePages()是否有更多的页面可供展示
paginator.items()获取当前页的数据项
paginator.lastPage()获取最后一页的页码
paginator.perPage()获取每一页显示的数量总数
paginator.total()获取结果集中的数据总数

序列化为对象/JSON

您还可以通过调用 toDatatoJson 方法将分页器结果序列化为 Object/JSON。 它默认返回「蛇形命名」中的键名。

JSON
{
  "total": 45,
  "per_page": 15,
  "current_page": 1,
  "last_page": 3,
  "count": 15,
  "data": [
    {
      // Record...
    },
    {
      // Record...
    }
  ],
}

Released under the MIT License. (dev)