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