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();
}
?>
?>