Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
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().
$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
$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
Pages: 1