sql >> Databasteknik >  >> RDS >> Mysql

Hur hämtar man nästa objekt i en lista med MySQL-poster?

Jag använder faktiskt inte Symfony, men om du använder en till och med nyligen uppdaterad version av Propel med den har du tillgång till paginate() metod vilket kan bli mycket bättre i slutändan för dig.

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

Om du verkligen vill göra det på ditt sätt, kanske du vill ta bort begränsningen med ItemId helt och hållet och helt enkelt lägga till en offset tillsammans med din gräns:

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



  1. MySQL IN-sats:max antal argument

  2. Någon anledning att fortfarande använda ormfodral för databastabeller och kolumner?

  3. Laravel Okänd kolumn 'updated_at'

  4. Infoga data i tabellen på en gång som hämtas från mySQL select-kommandot