Zend_Db_Table_Rowset
является итератором для
наборов объектов Zend_Db_Table_Row
. Обычно
вы не создаете экземпляр Zend_Db_Table_Rowset
непосредственно,
вместо этого получаете Zend_Db_Table_Rowset
как возращаемый
результат вызова методов Zend_Db_Table::find()
или fetchAll()
. После этого вы можете производить итерацию набора
объектовZend_Db_Table_Row
и изменять их по своему желанию.
Первое, что нужно сделать -- создать экземпляр класса Zend_Db_Table
.
<?php // создание адаптера require_once 'Zend/Db.php'; $params = array ( 'host' => '127.0.0.1', 'username' => 'malory', 'password' => '******', 'dbname' => 'camelot' ); $db = Zend_Db::factory('PDO_MYSQL', $params); // установка адаптера по умолчанию для всех объектов Zend_Db_Table require_once 'Zend/Db/Table.php'; Zend_Db_Table::setDefaultAdapter($db); // соединение с таблицей в БД class RoundTable extends Zend_Db_Table {} $table = new RoundTable(); ?>
Далее, получите множество записей из БД, используя Zend_Db_Table::find()
с набором ключей или Zend_Db_Table::fetchAll()
.
Возвращенный результат будет объектом Zend_Db_Table_Rowset
,
который позволит вам производить обход каждого отдельного объекта
Zend_Db_Table_Row
в наборе записей.
<?php // извлечение множества записей из таблицы $rowset = $table->fetchAll(); // // $rowset теперь является объектом Zend_Db_Table_Rowset, // состоящим из одного объекта Zend_Db_Table_Row на каждую запись в результате // ?>
Zend_Db_Table_Rowset
реализует интерфейс итератора SPL, это означает,
что вы можете обходить объекты Zend_Db_Table_Rowset
как массивы,
используя foreach()
. Каждое значение, которое вы извлечете таким
способом, будет объектом Zend_Db_Table_Row
, который соответствует
одной записи, полученной из таблицы. Вы можете просматривать, изменять и сохранять
свойства для этих записей.
<?php // соединение с таблицей в БД class RoundTable extends Zend_Db_Table {} $table = new RoundTable(); // извлечение множества записей из таблицы $rowset = $table->fetchAll(); // отображение их всех foreach ($rowset as $row) { // $row теперь является объектом Zend_Db_Table_Row echo "<p>" . htmlspecialchars($row->nobleTitle) . " " . htmlspecialchars($row->firstName) . "'s " . "favorite color is " . htmlspecialchars($row->favoriteColor) . ".</p>\n"; // изменение количества отображений для данной строки // (ему соответствует столбец "times_displayed" в таблице) $row->timesDisplayed ++; // сохранение записи с новой информацией $row->save(); } ?>