Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak pobrać kolejną pozycję na liście rekordów MySQL?

Właściwie nie używam Symfony, ale jeśli używasz z nim nawet nowszej wersji Propela, masz dostęp do paginate() metoda co może być dla Ciebie o wiele lepsze.

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

Jeśli naprawdę chcesz zrobić to po swojemu, możesz całkowicie wyeliminować ograniczenie przez ItemId i po prostu dodać przesunięcie wraz z limitem:

// 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak podzielić wyniki zapytań na strony dla Infinite Scroll?

  2. sql if w instrukcji insert bez select

  3. Parsowanie danych JSON i wstawianie do MySQL

  4. Możliwe konsekwencje zwiększenia długości varchar w MySql?

  5. Nie znaleziono metody w klasie