Tôi thực sự không sử dụng Symfony, nhưng nếu bạn đang sử dụng phiên bản Propel thậm chí từ xa với nó thì bạn có quyền truy cập vào paginate()
phương pháp
cuối cùng có thể tốt hơn rất nhiều cho bạn.
$pager = CartQuery::create()
->filterByCategory($category)
->orderBy(CartPeer::ITEM_NAME)
->paginate($pageToLoad, $resultsPerPage);
foreach($pager as $result) {
// do something with the record
}
if ($pager->haveToPaginate()) {
// build some paging items using PropelModelPager methods:
if (!$pager->isFirstPage()) {
echo "<a href='?page=".$pager->getPreviousPage()."'>Previous</a>";
}
if (!$pager->isLastPage()) {
echo "<a href='?page=".$pager->getNextPage()."'>Next</a>";
}
}
Nếu bạn thực sự muốn làm theo cách của mình, bạn có thể muốn loại bỏ hoàn toàn hạn chế bằng ItemId và chỉ cần thêm phần bù cùng với giới hạn của mình:
// This will be however many results have already been shown (page size?)
$offset = 10;
$c = new Criteria();
$c->add(CartPeer::CATEGORY, $category);
$c->addAscendingOrderByColumn(CartPeer::ITEM_NAME);
$c->setOffset($offset);
$this->next = CartPeer::doSelectOne($c);