分頁機制

天笑發表於2017-03-08

分頁機制

query操作預設支援分頁(paging), 一般呼叫形式為

Ordr.query(_pagekey?, _pagesz?=20) -> {nextkey?, total?, @h, @d}

引數:
- _pagesz: Integer. 頁大小,預設為20條資料。
- _pagekey: String (一般是數值). 首次查詢不用填寫(或填0),而下次查詢時應根據上次呼叫時返回資料的"nextkey"欄位來填寫。

返回:
- nextkey: String (一般是數值). 用來取下一頁資料時填寫_pagekey欄位,如果沒有該欄位,則說明已經是最後一頁資料。
- total: Integer. 總記錄數。僅當請求時指定 _pagekey=0 時返回。
- h/d: 實際資料表的頭資訊(header)和資料行(data),符合table物件的格式,參考上一章節tbl(id,name)介紹。

示例: 第一次查詢

Ordr.query()

返回

{nextkey: 10800910, h: [id, ...], d: [...]}

要在首次查詢時返回總記錄數,則用_pagekey=0

Ordr.query(_pagekey=0)

這時返回

{nextkey: 10800910, total: 51, h: [id, ...], d: [...]}

第二次查詢(下一頁)

Ordr.query(_pagekey=10800910)

直到返回資料中不帶"nextkey"屬性,表示所有資料獲取完畢。

[分頁大小]

query介面的_pagesz引數可以指定每頁返回多少條資料,預設是20條。為了後端效能與安全,預設限制了_pagesz不可超過100條。如果想要指定更大的頁大小,可以設定屬性$maxPageSz

class MyObj extends AccessControl
{
    protected $maxPageSz = 1000; // 最大允許返回1000條
    // protected $maxPageSz = -1; // 最大允許返回 PAGE_SZ_LIMIT 條
}

常量PAGE_SZ_LIMIT定義了最大可以設定的值,目前是10000.

相關文章