Табличная функция zf2 как tablegateway/tablePhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Табличная функция zf2 как tablegateway/table

Сообщение Anonymous »

Как использовать табличную функцию, например

Код: Выделить всё

select * from pv_my_table_valued_function(1)
"pv_my_table_valued_function(?)" в качестве таблицы для моего tablegateway

например, обычное создание экземпляра будет таким:< /p>

Код: Выделить всё

'Application\Model\MyTable' =>  function($sm) {
$tableGateway = $sm->get('MyTableGateway');
$table = new MyTable($tableGateway);
return $table;
},
'MyTableGateway' => function ($sm) {
$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$resultSetPrototype = new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new MyTableEntity());
return new TableGateway('my_table', $dbAdapter, null, $resultSetPrototype);
},
Могу ли я сделать то же самое, например:

Код: Выделить всё

'MyTableValuedGateway' => function ($sm) {
$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$resultSetPrototype = new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new MyTableValued());
return new TableGateway('pv_my_table_valued_function(?)', $dbAdapter, null, $resultSetPrototype);
},
Или есть другие идеи, как это сделать вместо того, чтобы позже приводить объект Select к строке и заменять имя таблицы?

Изменить:

В качестве быстрого базового примера того, как я буду использовать tableGateway позже:
В моей модели MyTable.php

Код: Выделить всё

public function fetchAll()
{
// I already initialized the tableGateway via Dependecy Injection in
// a __construct() in an abstract class
$select = $this->tableGateway->getSql()->select();

// some sql stuff
$select->where(...);
$select->order(...);

// now it gets tricky.. what I normally do is known
$resultSet = $this->tableGateway->selectWith($select);

// what I need to do when using my table valued function is like
$adapter = $this->tableGateway->getAdapter();
$platform = $adapter->getPlatform();
$sqlStr = $select->getSqlString($platform);

$select = str_replace('FROM [my_table]', "FROM pv_my_table_valued_function({$this->my_special_parameter}) AS my_pv", $sqlStr);

$resultSet = $adapter->query($select, array());

return $resultSet;
}
Так как же я могу «остаться» с объектом Select, но каким-то образом передать этот параметр с помощью подстановочного знака?

Надеюсь, это прояснит ситуацию

Подробнее здесь: https://stackoverflow.com/questions/501 ... eway-table
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»