Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 20-07-2009 16:24:40

supertino7
Membre
Date d'inscription: 21-02-2009
Messages: 113

[Zend_Paginator] Passer l'objet select à factory()

Salut,

Je rencontre un petit souci d'implémentation avec le Zend_Paginator.

En fait, pour commencer par le commencement, j'ai suivi un simple tutorial qui explique simplement de transmettre un objet select au Zend_Paginator::factory().

Code:

$articles = $model->getLastNews();
        
$page = Zend_Paginator::factory($articles);

Quand j'ai cru procéder ainsi sur ma base de 11 000 articles, je me suis rendu compte que le script avait bouffé 30mo de mémoire.

Je me suis dit immédiatement que le paginateur devait itérer sur un gros tableau de résultat, et qu'en gros tout avait été extrait de ma base, pour ensuite itérer dessus.

et effectivement c'était le cas. En cherchant pourquoi, dans les méthodes de mes classes étendants Zend_Db_Table_Abstract, je finis toujours par un :
return $this->fetchAll($select)
par exemple

Code:

$select = $this->select();
$select->from($this)
               // Joindre le nom de l'auteur
               ->join('ss_membres', 'ss_membres.id = ss_content.id_redacteur', array('nom' => 'ss_membres.nom','prenom' => 'ss_membres.prenom','id_redacteur' => 'ss_membres.id'))
               // Joindre le nom de la catégorie
                  etc...
return $this->fetchAll($select)

Ce qui renvoie un objet de résultat et donne l'utilisation d'un adapteur Zend_Paginator_Adapter_Iterator, au lieu d'un Zend_Paginator_Adapter_DbTableSelect (qui controle bien les clauses LIMIT et OFFSET)

Ma question est donc :
Comment du coup récupérer l'objet select() pour le transmettre au paginator, vu qu'à la base dans mes classes ORM, je finis par renvoyer un fetch à la fin de chacune de mes requêtes ?

Je me demandais d'ailleurs si c'était pas une mauvaise conception de ma part, et si je devais pas simplement dans mes classes ORM renvoyer un objet select, et procéder au fetchAll dans mon modèle.


Merci pour vos réponses.

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