5.6. Zend_Db_Table_Rowset
Пред. | Глава 5. Zend_Db | След.

## 5.6. Zend_Db_Table_Rowset

### 5.6.1. Введение

`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` и изменять их по своему желанию.

### 5.6.2. Извлечение набора строк

Первое, что нужно сделать -- создать экземпляр класса `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 на каждую запись в результате
    //
    ?>

### 5.6.3. Итерация набора строк

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

Пред. | Уровень выше | След.
5.5. Zend_Db_Table_Row | Начало | Глава 6. Zend_Feed