ZF2 использует несколько TableGatway в одном модуле

У меня есть одна проблема. Я не знаю, как использовать несколько таблиц и объединить запрос в ZF2.

Я использую Service Manager и TableGateway для модели. Но в этом всегда используется одна таблица.
Как я могу использовать несколько таблиц в одном контроллере или модели?

Здесь я использую Module.php файл и настроить таблицу шлюза.
Когда я добавляю еще один табличный шлюз, это дает мне ошибки.

public function getServiceConfig()
{
return array(
'factories' => array(
'User\Model\UserTable' =>  function($sm) {
$tableGateway = $sm->get('UserTableGateway');
$table = new UserTable($tableGateway);
return $table;
},
'UserTableGateway' => function ($sm) {
$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$resultSetPrototype = new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new User());
return new TableGateway('user', $dbAdapter, null, $resultSetPrototype);
},
),
);
}

Мне нужно вставить userItems в пользовательском контроллере с помощью UseritemTable.php под User/Model/UseritemTable, Как мне этого добиться?

Error message
Zend\Mvc\Controller\PluginManager::get was unable to fetch or create an instance for getUseritemTable

Обновлен Module.php

public function getServiceConfig()
{
return array(
'factories' => array(
'User\Model\UserTable' =>  function($sm) {
$tableGateway = $sm->get('UserTableGateway');
$table = new UserTable($tableGateway);
return $table;
},
'UserTableGateway' => function ($sm) {
$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$resultSetPrototype = new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new User());
return new TableGateway('user', $dbAdapter, null, $resultSetPrototype);
},
'User\Model\UseritemTable' =>  function($sm) {
$tableGateway = $sm->get('UseritemTableGateway');
$table = new UseritemTable($tableGateway);
return $table;
},
'UseritemTableGateway' => function ($sm) {
$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$resultSetPrototype = new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new Useritem());
return new TableGateway('useritem', $dbAdapter, null, $resultSetPrototype);
},
),
);
}

UserController.php под этим userItemAction

public function userItemAction()
{$form->get('submit')->setValue('Add');
$request = $this->getRequest();

if ($request->isPost()) {
$item = new Useritem();
$data = $request->getPost()->toArray();
$form->setData($data);
if($form->isValid()){
$item->exchangeArray($form->getData());
$this->getUseritemTable()->saveItem($item); // while saveItem cause error using getUseritemTable()}

}

return array('form' => $form);

}

Вот мой код для User \ Model \ UseritemTable.php

namespace User\Model;

use Zend\Db\TableGateway\TableGateway;

class UseritemTable
{
protected $tableGateway;

public function __construct(TableGateway $tableGateway)
{
$this->tableGateway = $tableGateway;
}

public function fetchAll()
{
$resultSet = $this->tableGateway->select();
return $resultSet;
}public function saveItem(User $item)
{
$this->tableGateway->insert($item);
}}

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]