9.6. Zend_Db_Table_Rowset
Poprzedni | Rozdział 9. Zend_Db | Następny

## 9.6. Zend_Db_Table_Rowset

### 9.6.1. Wprowadzenie

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.

### 9.6.2. Pobieranie zestawu wierszy

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
    //
    ?>

### 9.6.3. Przechodzenie przez zestaw wierszy

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

Poprzedni | Początek rozdziału | Następny
9.5. Zend_Db_Table_Row | Spis treści | Rozdział 10. Zend_Feed