Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
J'ai suivi la doc pour utiliser le PAGINATOR à la façon de l'exemple ALBUM
Je vois que le PAGINATOR tel que je l'utilise génère deux requêtes...
La première :
SELECT COUNT(1) AS `c` FROM (SELECT `posts`.* FROM `posts`) AS `original_select`
J'ai mis 200 000 lignes dans ma base de test et la requete est exécutée en 3 secondes alors que s'il faisait la requête suivante, elle s'exécuterait en 0.001 ms...
SELECT count (*) as count from posts
Puis après il fait le deuxième query :
SELECT `posts`.* FROM `posts` LIMIT 10, 20
Le deuxième query me va bien
Voici le code que j'ai dans mon modele
public function fetchAll($paginated=false)
{
if($paginated) {
// create a new Select object for the table annonce
$select = new Select('posts');
// create a new result set based on the Annonce entity
$resultSetPrototype = new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new Posts());
// create a new pagination adapter object
$paginatorAdapter = new DbSelect(
// our configured select object
$select,
// the adapter to run it against
$this->tableGateway->getAdapter(),
// the result set to hydrate
$resultSetPrototype
);
$paginator = new Paginator($paginatorAdapter);
return $paginator;
}
$resultSet = $this->tableGateway->select();
return $resultSet;
}Et dans le controller
$paginator = $this->getpostTable()->fetchAll(true);
// set the current page to what has been passed in query string, or to 1 if none set
$paginator->setCurrentPageNumber((int)$this->params()->fromQuery('page', 1));Comment puis je faire pour qu'il fasse seulement un SELECT count(*) from posts ???
Merci pour votre aide car j'ai du mal avec la doc en anglais ![]()
Hors ligne
Salut, je ne connais pas trop Zend\Db mais normalement il le fait tout seul quand tu récupères le paginateur. Rajoute setItemCountPerPage sur ton paginateur pour voir
.
Pour la doc malheureusement il faut y passer avec le temps ça deviendra de plus en plus facile te décourage pas
!
Hors ligne