Zend_Db_Table_Row é um row data gateway do Framework Zend. De modo geral, você não instancia Zend_Db_Table_Row; em vez disso, você recebe um objeto Zend_Db_Table_Row como resultado de retorno de Zend_Db_Table::find() ou Zend_Db_Table::fetchRow(). Uma vez que você tem um Zend_Db_Table_Row, você pode editar os valores do registro (representados como propriedades de classe) e então salvar as alterações de volta à tabela de origem através do método save().
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 um registro do banco de dados usando Zend_Db_Table::find() com uma chave única, ou usando Zend_Db_Table::fetchRow(). O resultado retornado será um objeto Zend_Db_Table_Row em que cada propriedade do objeto é um nome no formato "camelCaps" correspondente à uma coluna da tabela no formato "underscore_words". Por exemplo, "first_name" na tabela será "firstName" nas propriedades do objeto.
<?php // busca um registro da tabela como um objeto Zend_Db_Table_Row $row = $table->fetchRow('first_name = "Robin"'); // // $row é agora um objeto Zend_Db_Table_Row com propriedades públicas // que mapeiam para colunas da tabela: // // $row->id = '3' // $row->nobleTitle = 'Sir' // $row->firstName = 'Robin' // $row->favoriteColor = 'yellow' // ?>
Modificar valores da linha é muito fácil: simplesmente trabalhe com as propriedades do objeto da mesma maneira que você faria com qualquer outro objeto. Então você pode salvar a linha de volta usando save() quando você tiver terminado.
<?php // conecta com uma tabela no banco de dados class RoundTable extends Zend_Db_Table {} $table = new RoundTable(); // recupera um registro da tabela como um objeto Zend_Db_Table_Row $row = $table->fetchRow('first_name = "Robin"'); // // $row é agora um objeto Zend_Db_Table_Row com propriedades públicas // que mapeiam para colunas da tabela: // // $row->id = '3' // $row->nobleTitle = 'Sir' // $row->firstName = 'Robin' // $row->favoriteColor = 'yellow' // // altere a cor favorita e salve de volta para a tabela. $row->favoriteColor = 'blue';' $row->save(); ?>
No entanto, você não pode alterar os valores de chaves primárias; se você fizer isso, Zend_Db_Table_Row vai descartar uma exceção.
<?php // conecta com uma tabela no banco de dados class RoundTable extends Zend_Db_Table {} $table = new RoundTable(); // recupera um registro da tabela como um objeto Zend_Db_Table_Row $row = $table->fetchRow('first_name = "Robin"'); // podemos alterar a chave primária "id"? try { $row->id = 5; echo "Nós não deveríamos ver esta mensagem, porque uma exceção foi descartada."; } catch (Zend_Db_Table_RowException $e) { echo $e->getMessage(); } ?>