Содержание


RowGateway


RowGateway, ЗФ2, Zend Framework 2, ZF2, DB




Zend\Db\RowGateway   - это дополнительный компонент Zend\Db, реализующий паттерн Row Gateway от  PoEAA. Тоесть объекты Row Gateway моделируют строку БД и имеют такие методы, как save() и delete(), которые помогаю сохранять строку-объект в БД. Кроме того, после извлечения этой строки из БД, её можно изменить и save() (сохранить) её обратно на туже позицию(строку) или delete()  (удалить) из таблицы.

 

Интерфейс для Row Gateway просто добавляет методы save() и delete() , а так же этот интерфейс следует использовать когда компонент имеет зависимость, которая в свою очередь должна быть объектом RowGateway.

interface RowGatewayInterface
{
    public function save();
    public function delete();
}


Быстрый старт

 

Обычно RowGateway используется совместно с Zend\Db\ResultSet. Но при необходимости можно использовать и независимо. Для независимого использования необходимо передать адаптер для соединения с БД и данные. Пример простого использования Zend\Db\RowGateway\RowGateway:

use Zend\Db\RowGateway\RowGateway;
 
// query the database
$resultSet = $adapter->query('SELECT * FROM `user` WHERE `id` = ?', array(2));
 
// get array of data
$rowData = $resultSet->current()->getArrayCopy();
 
// row gateway
$rowGateway = new RowGateway('id', 'my_table', $adapter);
$rowGateway->populate($rowData);
 
$rowGateway->first_name = 'New Name';
$rowGateway->save();
 
// or delete this row:
$rowGateway->delete();

Процесс работы описанный выше можно упростить, если его использовать с TableGateway. Тоесть, сначала объект TableGateway делает select() из БД, создает объект ResultSet, который затем в состоянии создать объект Row Gateway. Смотрим:

use Zend\Db\TableGateway\Feature\RowGatewayFeature;
use Zend\Db\TableGateway\TableGateway;
 
$table = new TableGateway('artist', $adapter, new RowGatewayFeature('id'));
$results = $table->select(array('id' => 2));
 
$artistRow = $results->current();
$artistRow->name = 'New Name'; 
$artistRow->save();

Автор статьи: DuB