Zend_Db_Table_Row jest klasą obsługi wiersza danych dla Zend Framework. W zasadzie nie tworzysz sam instancji Zend_Db_Table_Row; otrzymujesz obiekt Zend_Db_Table_Row jako wartość zwracaną przez metodę Zend_Db_Table::find() lub Zend_Db_Table::fetchRow(). Kiedy masz instancję Zend_Db_Table_Row, możesz edytować wartości rekordu (reprezentowane jako właściwości klasy) i następnie zapisać zmiany za pomocą metody save() spowrotem w tabeli.
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 jeden rekord z bazy danych używając metody Zend_Db_Table::find() z pojedynczym kluczem, lub używając metody Zend_Db_Table::fetchRow(). Zwrócony rezultat będzie obiektem Zend_Db_Table_Row gdzie każda właściwość obiektu jest nazwą w postaci "camelCaps" zmapowaną na nazwy kolumn "underscore_words" z tabeli. Np., nazwa kolumny "first_name" z tabeli stanie się nazwą "firstName" właściwości obiektu.
<?php // pobierzmy rekord z tabeli jako obiekt Zend_Db_Table_Row $row = $table->fetchRow('first_name = "Robin"'); // // $row jest teraz obiektem Zend_Db_Table_Row z publicznymi właściwościami // które odpowiadają kolumnom tabeli: // // $row->id = '3' // $row->nobleTitle = 'Sir' // $row->firstName = 'Robin' // $row->favoriteColor = 'yellow' // ?>
Modyfikowanie wartości jest bardzo proste: po prostu używaj wartości obiektu w taki sam sposób jak w każdym innym obiekcie. Wtedy możesz użyć metody save() aby zapisać zmiany w wierszu tabeli.
<?php // połączmy się z tabelą w bazie danych class RoundTable extends Zend_Db_Table {} $table = new RoundTable(); // pobierzmy rekord z tabeli jako obiekt Zend_Db_Table_Row $row = $table->fetchRow('first_name = "Robin"'); // // $row jest teraz obiektem Zend_Db_Table_Row z publicznymi właściwościami // które odpowiadają kolumnom tabeli: // // $row->id = '3' // $row->nobleTitle = 'Sir' // $row->firstName = 'Robin' // $row->favoriteColor = 'yellow' // // zmieniamy ulubiony kolor i zapisujemy zmiany w tabeli. $row->favoriteColor = 'blue';' $row->save(); ?>
Jakkolwiek, nie możesz zmienić wartości klucza podstawowego; jeśli spróbujesz, Zend_Db_Table_Row wyrzuci wyjątek.
<?php // połączmy się z tabelą w bazie danych class RoundTable extends Zend_Db_Table {} $table = new RoundTable(); // pobierzmy rekord z tabeli jako obiekt Zend_Db_Table_Row $row = $table->fetchRow('first_name = "Robin"'); // czy możemy zmienić klucz podstawowy "id"? try { $row->id = 5; echo "Nie powinniśmy zobaczyć tej wiadomości, ponieważ powinien być wyrzucony wyjątek."; } catch (Zend_Db_Table_RowException $e) { echo $e->getMessage(); } ?>