Zend_Db_Table_Rowset
constitue un itérateur sur une série d'objets Zend_Db_Table_Row
.
En général, vous n'instanciez pas directement Zend_Db_Table_Rowset
; vous obtenez plutôt un objet
Zend_Db_Table_Rowset
comme valeur de renvoi des méthodes Zend_Db_Table::find()
ou
fetchAll()
. Vous pouvez ensuite itérer sur les objets Zend_Db_Table_Row
ainsi rassemblés et les modifier comme vous voulez.
La première chose à faire consiste à instancier la classe Zend_Db_Table
.
<?php // définition d'un adaptateur require_once 'Zend/Db.php'; $parametres = array ( 'adapter' => 'PDO_MYSQL', 'host' => '127.0.0.1', 'username' => 'arthur', 'password' => '******', 'dbname' => 'camelot' ); $db = Zend_Db::factory($parametres); // définition de l'adaptateur par défaut de tous les objets Zend_Db_Table require_once 'Zend/Db/Table.php'; Zend_Db_Table::setDefaultAdapter($db); // connexion à une table de la base de données class TableRonde extends Zend_Db_Table {} $table = new TableRonde(); ?>
Puis, on obtient plusieurs enregistrements de la base de données en passant plusieurs clés à la méthode Zend_Db_Table::find()
ou en utilisant la méthode Zend_Db_Table::fetchAll()
; le résultat renvoyé sera un objet Zend_Db_Table_Rowset
qui vous permettra
d'itérer sur les objets Zend_Db_Table_Row
associés aux enregistrements de l'ensemble.
<?php // on va chercher plusieurs enregistrements de la table $lignes = $table->fetchAll(); // // $lignes constitue maintenant un objet Zend_Db_Table_Rowset composé d'un // objet Zend_Db_Table_Row par enregistrement du résultat // ?>
Zend_Db_Table_Rowset
implémente l'interface SPL, ce qui signifie que vous pouvez itérer sur les objets Zend_Db_Table_Rowset
à l'aide de foreach(),
tout comme pour les tableaux. La valeur obtenue à chaque itération sera un objet Zend_Db_Table_Row
qui correspond à un enregistrement de la table;
vous pouvez ensuite voir, modifier et enregistrer les propriétés de cet enregistrement.
<?php // connexion à une table de la base de données class TableRonde extends Zend_Db_Table {} $table = new TableRonde(); // récupération de plusieurs enregistrements de la table $lignes = $table->fetchAll(); // affichage foreach($lignes as $ligne) { // $ligne est un objet Zend_Db_Table_Row echo "<p>La couleur préférée de " . htmlspecialchars($ligne->titre) . " " . htmlspecialchars($ligne->prenom) . " est " . htmlspecialchars($ligne->couleurPreferee) . ".</p>\n"; // mise à jour du nombre de fois où cette ligne a été affichée // (propriété associée à la colonne "nombre_de_fois_affichee" de la table) $ligne->nombreDeFoisAffichee ++; // enregistrement avec ses nouvelles informations $ligne->save(); } ?> ?>