3.5. Zend_Db_Table_Rowset
Anterior | Capítulo 3. Zend_Db | Próxima

## 3.5. Zend_Db_Table_Rowset

### 3.5.1. Introdução

Zend_Db_Table_Rowset é um iterator para coleções de objetos Zend_Db_Table_Row. De modo geral, você não instancia Zend_Db_Table_Rowset; em vez disso, você recupera um objeto Zend_Db_Table_Rowset como o resultado de retorno de Zend_Db_Table::find() ou fetchAll(). Você pode então percorrer os objetos Zend_Db_Table_Row da coleção e modificá-los como desejar.

### 3.5.2. Buscando um Rowset

A primeira coisa a fazer é instanciar a classe Zend_Db_Table.

    <?php
    // inicializa um adaptador
    require_once 'Zend/Db.php';
    $params = array (
        'host'     => '127.0.0.1',
        'username' => 'malory',
        'password' => '******',
        'dbname'   => 'camelot'
    );

    $db = Zend_Db::factory('PDO_MYSQL', $params);

    // define o adaptador como padrão para todos os objetos Zend_Db_Table
    require_once 'Zend/Db/Table.php';
    Zend_Db_Table::setDefaultAdapter($db);

    // conecta com uma tabela no banco de dados
    class RoundTable extends Zend_Db_Table {}
    $table = new RoundTable();
    ?>

Em seguida, recupere vários registros do banco de dados usando Zend_Db_Table::find() com múltiplas chaves, ou usando Zend_Db_Table::fetchAll(); o resultado retornado será um objeto Zend_Db_Table_Rowset que permitirá a você percorra os objetos Zend_Db_Table_Row individuais na coleção de registros.

    <?php
    // busca vários registros da tabela
    $rowset = $table->fetchAll();

    //
    // $rowset é agora um objeto Zend_Db_Table_Rowset composto por
    // um objeto Zend_Db_Table_Row por registro nos resultados
    //
    ?>

### 3.5.3. Percorrendo o Rowset

Zend_Db_Table_Rowset implementa a interface do SPL Iterator, o que significa que você podepercorrer os objetos Zend_Db_Table_Rowset como se fossem matrizes usando foreach(). Cada valor que você recebe deste modo será um Zend_Db_Table_Row que corresponde a um registro da tabela; você pode então ver, modificar e salvar as propriedades daquele registro.

    <?php
    // conecta com uma tabela no banco de dados
    class RoundTable extends Zend_Db_Table {}
    $table = new RoundTable();

    // busca vários registros da tabela
    $rowset = $table->fetchAll();

    // mostra todos
    foreach ($rowset as $row) {
        // $row é um objeto Zend_Db_Table_Row
        echo "<p>" . htmlspecialchars($row->nobleTitle) . " "
           . htmlspecialchars($row->firstName) . "'s "
           . "favorite color is " . htmlspecialchars($row->favoriteColor)
           . ".</p>\n";

        // atualiza o número de vezes que mostramos este registro,
        // (a propriedade corresponde à coluna "times_displayed" na tabela)
        $row->timesDisplayed ++;

        // salva o registro com a nova informação
        $row->save();
    }
    ?>

Anterior | Acima | Próxima
3.4. Zend_Db_Table_Row | Principal | Capítulo 4. Zend_Feed