Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 27-11-2013 17:17:08

siriu
Membre
Date d'inscription: 17-05-2011
Messages: 55

Paginator

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 :

Code:

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...

Code:

SELECT count (*) as count from posts

Puis après il fait le deuxième query :

Code:

SELECT `posts`.* FROM `posts` LIMIT 10, 20

Le deuxième query me va bien

Voici le code que j'ai dans mon modele

Code:

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

Code:

        $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   sad

Hors ligne

 

#2 27-11-2013 17:34:11

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: Paginator

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 wink.

Pour la doc malheureusement il faut y passer avec le temps ça deviendra de plus en plus facile te décourage pas wink !

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages