6.6. Zend_Db_Table_Rowset
Zurück | Kapitel 6. Zend_Db | Weiter

## 6.6. Zend_Db_Table_Rowset

### 6.6.1. Einführung

Zend_Db_Table_Rowset ist ein Iterator für Sammlungen von Zend_Db_Table_Row Objekten. Im Allgemeinen kannst du Zend_Db_Table_Rowset nicht selbst instanziieren; stattdessen erhältst du eine Zend_Db_Table_Rowset Objekt als Rückgabewert von einem Zend_Db_Table::find() oder fetchAll() Aufruf. Du kannst dann durch die gesammelten Zend_Db_Table_Row Objekte iterieren und sie verändern, wie du möchtest.

### 6.6.2. Einen Zeilensatz holen

Als erstes muss die Zend_Db_Table Klasse instanziiert werden.

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

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

    // Den Default Adapter für alle Zend_Db_Table Objekte setzen
    require_once 'Zend/Db/Table.php';
    Zend_Db_Table::setDefaultAdapter($db);

    // Zu einer Tabelle in der Datenbank verbinden
    class RoundTable extends Zend_Db_Table {}
    $table = new RoundTable();
    ?>

Als nächstes empfänge mehrere Datensätze aus deiner Datenbank durch Verwendung von Zend_Db_Table::find() mit mehreren Schlüssel oder durch Verwendung von Zend_Db_Table::fetchAll(); das zurückgegebene Ergebnis wird ein Zend_Db_Table_Rowset Objekt sein, dass dich durch die individuellen Zend_Db_Table_Row Objekte in dem Zeilensatz iterieren lässt.

    <?php
    // hole mehrere Datensätze aus der Tabelle
    $rowset = $table->fetchAll();

    //
    // $rowset ist nun ein Zend_Db_Table_Rowset Objekt bestehend aus
    // einem Zend_Db_Table_Row Objekt pro Datensatz im Ergebnis
    //
    ?>

### 6.6.3. Durch den Zeilensatz iterieren

Zend_Db_Table_Rowset implementiert das SPL Iterator Interface, was bedeutet, dass du Zend_Db_Table_Rowset Objekte wie Arrays mittels foreach() durchlaufen kannst. Jeder Wert, den du auf dieser Weise erhältst, wird ein Zend_Db_Table_Row Objekt sein, das einem Datensatz in deiner Tabelle entspricht; du kannst die Eigenschaften des Datensatzes anzeigen, ändern oder speichern.

    <?php
    // Zu einer Tabelle in der Datenbank verbinden
    class RoundTable extends Zend_Db_Table {}
    $table = new RoundTable();

    // hole mehrere Datensätze aus der Tabelle
    $rowset = $table->fetchAll();

    // zeige sie alle an
    foreach ($rowset as $row) {
        // $row ist ein Zend_Db_Table_Row Objekt
        echo "<p>" . htmlspecialchars($row->nobleTitle) . " "
           . htmlspecialchars($row->firstName) . "'s "
           . "favorite color is " . htmlspecialchars($row->favoriteColor)
           . ".</p>\n";

        // aktualisiere die Anzahl, wie oft diese Zeile angezeigt worden ist,
        // (was auf eine Spalte "times_displayed" in der Tabelle abgebildet wird)
        $row->timesDisplayed ++;

        // speichere den Datensatz mit den neuen Informationen
        $row->save();
    }
    ?>

Zurück | Nach oben | Weiter
6.5. Zend_Db_Table_Row | Zum Anfang | Kapitel 7. Zend_Feed