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