简体中文
分页
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
您还可以通过调用 toData
或 toJson
方法将分页器结果序列化为 Object/JSON。 它默认返回「蛇形命名」中的键名。
JSON
{
"total": 45,
"per_page": 15,
"current_page": 1,
"last_page": 3,
"count": 15,
"data": [
{
// Record...
},
{
// Record...
}
],
}