Zend_Db_Table_Rowset jest iteratorem dla kolekcji obiektów Zend_Db_Table_Row. W zasadzie nie tworzysz sam instancji Zend_Db_Table_Rowset; zamiast tego odbierasz obiekt Zend_Db_Table_Rowset jako rezultat wywołania metody Zend_Db_Table::find() lub fetchAll(). Możesz wtedy przejść przez kolekcję obiektów Zend_Db_Table_Row i modyfikować je tak jak chcesz.
Pierwsza rzecz do zrobienia to utworzenie instancji klasy Zend_Db_Table.
<?php // przygotujmy adapter require_once 'Zend/Db.php'; $params = array ( 'host' => '127.0.0.1', 'username' => 'malory', 'password' => '******', 'dbname' => 'camelot' ); $db = Zend_Db::factory('PDO_MYSQL', $params); // ustawmy domyślny adapter dla wszystkich obiektów Zend_Db_Table require_once 'Zend/Db/Table.php'; Zend_Db_Table::setDefaultAdapter($db); // połączmy się z tabelą w bazie danych class RoundTable extends Zend_Db_Table {} $table = new RoundTable(); ?>
Następnie pobieramy wiele rekordów z bazy danych używając metody Zend_Db_Table::find() z wieloma kluczami, lub używając metody Zend_Db_Table::fetchAll(); zwrócony wynik będzie obiektem Zend_Db_Table_Rowset który pozwoli ci na poruszanie się poprzez indywidualne obiekty Zend_Db_Table_Row w zestawie wierszy.
<?php // pobieranie wielu wierszy z tabeli $rowset = $table->fetchAll(); // // $rowset jest teraz obiektem Zend_Db_Table_Rowset składającym się // z obiektów Zend_Db_Table_Row, po jednym dla każdego wiersza // ?>
Zend_Db_Table_Rowset implementuje interfejs SPL Iterator, co oznacza, że możesz przejść w pętli przez obiekty Zend_Db_Table_Rowset jak przez tablicę używając instrukcji foreach(). Każda wartość którą odbierzesz będzie obiektem Zend_Db_Table_Row, który odpowiada jednemu rekordowi z tabeli; możesz odczytywać, modyfikować i zapisywać właściwości dla każdego rekordu.
<?php // połączmy się z tabelą w bazie danych class RoundTable extends Zend_Db_Table {} $table = new RoundTable(); // pobieranie wielu wierszy z tabeli $rowset = $table->fetchAll(); // wyświetlamy wszystkie foreach ($rowset as $row) { // $row jest obiektem Zend_Db_Table_Row echo "<p>" . htmlspecialchars($row->nobleTitle) . " " . htmlspecialchars($row->firstName) . "'s " . "ulubiony kolor to " . htmlspecialchars($row->favoriteColor) . ".</p>\n"; // aktualizujemy ilość wyświetleń danego wiersza, // (co odpowiada kolumnie w tabeli "times_displayed") $row->timesDisplayed ++; // zapisujemy rekord z nową informacją $row->save(); } ?>