Pagination involves providing a limited subset of the results of a database query. This is usually done for display purposes, but could easily apply to other situations. At first glance, it would seem the
LimitIterator class is ideally suited for the purposes of pagination. In cases where the potential result set could be massive; however,
LimitIterator is not such an ideal candidate, as you would need to supply the entire result set as an inner iterator, which would most likely exceed memory limitations. The second and third arguments to the
LimitIterator class constructor are offset and count. This suggests the pagination solution we will adopt, which is native to SQL: adding
OFFSET clauses to a given SQL statement. ...