Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie rufe ich das nächste Element in einer Liste von MySQL-Einträgen ab?

Ich verwende Symfony eigentlich nicht, aber wenn Sie eine auch nur annähernd aktuelle Version von Propel damit verwenden, haben Sie Zugriff auf den paginate() Methode was am Ende viel besser für Sie sein kann.

$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>";
  }
}

Wenn Sie es wirklich auf Ihre Weise tun möchten, können Sie die Einschränkung durch ItemId vollständig aufheben und einfach einen Offset zusammen mit Ihrem Limit hinzufügen:

// 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);