Zend_Db_Table_Row является интерфейсом Zend Framework
для строк данных. Обычно вы не создаете экземпляр
Zend_Db_Table_Row непосредственно, вместо этого получаете
Zend_Db_Table_Row как возращаемое значение методов
Zend_Db_Table::find() или Zend_Db_Table::fetchRow().
Имея Zend_Db_Table_Row, вы можете редактировать значения
записи (представленные как свойства класса) и затем сохранять изменения
в исходной таблице методом save().
Первое, что нужно сделать — создать экземпляр класса Zend_Db_Table.
<?php
// создание адаптера
require_once 'Zend/Db.php';
$params = array (
'host' => '127.0.0.1',
'username' => 'malory',
'password' => '******',
'dbname' => 'camelot'
);
$db = Zend_Db::factory('PDO_MYSQL', $params);
// установка адаптера по умолчанию для всех объектов Zend_Db_Table
require_once 'Zend/Db/Table.php';
Zend_Db_Table::setDefaultAdapter($db);
// соединение с таблицей в БД
class RoundTable extends Zend_Db_Table {}
$table = new RoundTable();
?>
Далее, получите одну запись из БД, используя Zend_Db_Table::find()
с единственным ключом или Zend_Db_Table::fetchRow().
Возвращенный результат будет объектом Zend_Db_Table_Row, где
каждое свойство имеет имя с буквамиОбоихРегистров, соответствующее
имени столбца с знаками_подчеркивания. Т.е., "first_name" в таблице становится
"firstName" в свойствах объекта.
<?php
// извлечение записи из таблицы как объект Zend_Db_Table_Row
$row = $table->fetchRow('first_name = "Robin"');
//
// $row теперь является объектом Zend_Db_Table_Row
// с открытыми свойствами, которые соответствуют столбцам таблицы:
//
// $row->id = '3'
// $row->nobleTitle = 'Sir'
// $row->firstName = 'Robin'
// $row->favoriteColor = 'yellow'
//
?>
Изменение значений строки производится очень легко — просто работайте со
свойствами объекта. Когда все сделано, вы можете сохранить строку обратно в таблицу
методом save().
<?php
// соединение с таблицей в БД
class RoundTable extends Zend_Db_Table {}
$table = new RoundTable();
// извлечение записи из таблицы как объект Zend_Db_Table_Row
$row = $table->fetchRow('first_name = "Robin"');
//
// $row теперь является объектом Zend_Db_Table_Row
// с открытыми свойствами, которые соответствуют столбцам таблицы:
//
// $row->id = '3'
// $row->nobleTitle = 'Sir'
// $row->firstName = 'Robin'
// $row->favoriteColor = 'yellow'
//
// изменение любимого цвета и сохранение обратно в таблицу
$row->favoriteColor = 'blue';'
$row->save();
?>
Однако вам не дозволено менять значения первичного ключа. Если вы сделаете это,
Zend_Db_Table_Row сгенерирует исключение.
<?php
// соединение с таблицей в БД
class RoundTable extends Zend_Db_Table {}
$table = new RoundTable();
// извлечение записи из таблицы как объект Zend_Db_Table_Row
$row = $table->fetchRow('first_name = "Robin"');
// можем ли мы изменить первичный ключ "id"?
try {
$row->id = 5;
echo "Мы не должны видеть это сообщение, поскольку было сгенерировано исключение.";
} catch (Zend_Db_Table_RowException $e) {
echo $e->getMessage();
}
?>