Zend_Db_Table_Rowset ist ein Iterator für Sammlungen von Zend_Db_Table_Row Objekten. Im Allgemeinen kannst du Zend_Db_Table_Rowset nicht selbst instanziieren; stattdessen erhältst du eine Zend_Db_Table_Rowset Objekt als Rückgabewert von einem Zend_Db_Table::find() oder fetchAll() Aufruf. Du kannst dann durch die gesammelten Zend_Db_Table_Row Objekte iterieren und sie verändern, wie du möchtest.
Als erstes muss die Zend_Db_Table Klasse instanziiert werden.
<?php
// Einen Adapter erzeugen
require_once 'Zend/Db.php';
$params = array (
'host' => '127.0.0.1',
'username' => 'malory',
'password' => '******',
'dbname' => 'camelot'
);
$db = Zend_Db::factory('PDO_MYSQL', $params);
// Den Default Adapter für alle Zend_Db_Table Objekte setzen
require_once 'Zend/Db/Table.php';
Zend_Db_Table::setDefaultAdapter($db);
// Zu einer Tabelle in der Datenbank verbinden
class RoundTable extends Zend_Db_Table {}
$table = new RoundTable();
?>
Als nächstes empfänge mehrere Datensätze aus deiner Datenbank durch Verwendung von Zend_Db_Table::find() mit mehreren Schlüssel oder durch Verwendung von Zend_Db_Table::fetchAll(); das zurückgegebene Ergebnis wird ein Zend_Db_Table_Rowset Objekt sein, dass dich durch die individuellen Zend_Db_Table_Row Objekte in dem Zeilensatz iterieren lässt.
<?php
// hole mehrere Datensätze aus der Tabelle
$rowset = $table->fetchAll();
//
// $rowset ist nun ein Zend_Db_Table_Rowset Objekt bestehend aus
// einem Zend_Db_Table_Row Objekt pro Datensatz im Ergebnis
//
?>
Zend_Db_Table_Rowset implementiert das SPL Iterator Interface, was bedeutet, dass du Zend_Db_Table_Rowset Objekte wie Arrays mittels foreach() durchlaufen kannst. Jeder Wert, den du auf dieser Weise erhältst, wird ein Zend_Db_Table_Row Objekt sein, das einem Datensatz in deiner Tabelle entspricht; du kannst die Eigenschaften des Datensatzes anzeigen, ändern oder speichern.
<?php
// Zu einer Tabelle in der Datenbank verbinden
class RoundTable extends Zend_Db_Table {}
$table = new RoundTable();
// hole mehrere Datensätze aus der Tabelle
$rowset = $table->fetchAll();
// zeige sie alle an
foreach ($rowset as $row) {
// $row ist ein Zend_Db_Table_Row Objekt
echo "<p>" . htmlspecialchars($row->nobleTitle) . " "
. htmlspecialchars($row->firstName) . "'s "
. "favorite color is " . htmlspecialchars($row->favoriteColor)
. ".</p>\n";
// aktualisiere die Anzahl, wie oft diese Zeile angezeigt worden ist,
// (was auf eine Spalte "times_displayed" in der Tabelle abgebildet wird)
$row->timesDisplayed ++;
// speichere den Datensatz mit den neuen Informationen
$row->save();
}
?>