这是我的控制器
public function addAction()
{
if($this->getAuthService()->hasIdentity())
{
$this->layout('layout/adminDashboardLayout');
$request= $this->getRequest();
if($request->isPost())
{
$rowmaterial= new RowmaterialModel();
//Current User Id from Session
$session = new Container('user');
$userId = $session->offsetGet('userId');
$rowmaterial->setCode($request->getPost('category_alias'));
$rowmaterial->setCategory($request->getPost('category'));
$rowmaterial->setCreatedOn(date('Y-m-d H:i:s'));
$rowmaterial->setUpdatedOn(date('Y-m-d H:i:s'));
$rowmaterial->setCreatedBy($userId);
$this->getCategoryTable()->inserts($category);
}
$page = (int) $this->params()->fromRoute('page', 1);
$iteratorAdapter = new 'Zend'Paginator'Adapter'ArrayAdapter(iterator_to_array($this->getRowmaterialTable()->fetchAll()));
$category = new 'Zend'Paginator'Paginator($iteratorAdapter);
$viewModel= new ViewModel(array(
'fetchAllDatas' => $category->setCurrentPageNumber($page)->setItemCountPerPage('8'),
'categories' =>$this->getCategoryTable()->fetchAllCategoryStatusOn(),
'uom' => $this->getUomTable()->fetchAllUomStatusOn(),
'flashMessages' => $this->flashMessenger()->getMessages(),
));
return $viewModel;
}
else
{
$this->flashMessenger()->addMessage("Please Login");
return $this->redirect()->toRoute("admin");
}
这是我的第一个模型文件函数:
public function fetchAllCategoryStatusOn()
{
$statement= $this->adapter->query("call fetchAllCategoryStatusOn()");
$result= $statement->execute();
return $result;
}
这是我的第二个模型文件函数:
public function fetchAllUomStatusOn()
{
$statement= $this->adapter->query("call fetchAllUomStatusOn()");
$result= $statement->execute();
return $result;
}
在调用这个fetchAllUomStatusOn()
Storedprocedure的时候,这个错误将显示
SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries
are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only
ever going to run against mysql, you may enable query buffering by setting the
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.
这是我的global.php文件
return array(
'db' => array(
'driver' => 'Pdo',
'dsn' => 'mysql:dbname=cp;host=localhost',
'driver_options' => array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES ''UTF8'''
),
),
'service_manager' => array(
'factories' => array(
'Zend'Db'Adapter'Adapter'
=> 'Zend'Db'Adapter'AdapterServiceFactory',
),
),
);
我做了很多搜索,我不能得到正确的答案,最后我得到了'closeCursor()'函数。我这样使用这个函数
public function fetchAllUomStatusOn()
{
$statement= $this->adapter->query("call fetchAllUomStatusOn()");
$statement->closeCursor();
$result = $statement->execute();
return $result;
}
通过使用这个函数,这个错误将得到。
Fatal error: Call to undefined method Zend'Db'Adapter'Driver'Pdo'Statement::closeCursor() in /var/www/cp/module/Admin/src/Admin/Model/UomTable.php on line 100.
我的php版本是5.4。所以请帮帮我……这是我第一次尝试使用Stackoverflow。对不起,我的英语不好。
我解决了这个错误。控制器使用iterator_to_array()
功能
public function addAction()
{
if($this->getAuthService()->hasIdentity())
{
$this->layout('layout/adminDashboardLayout');
$request= $this->getRequest();
if($request->isPost())
{
$rowmaterial= new RowmaterialModel();
//Current User Id from Session
$session = new Container('user');
$userId = $session->offsetGet('userId');
$rowmaterial->setCode($request->getPost('category_alias'));
$rowmaterial->setCategory($request->getPost('category'));
$rowmaterial->setCreatedOn(date('Y-m-d H:i:s'));
$rowmaterial->setUpdatedOn(date('Y-m-d H:i:s'));
$rowmaterial->setCreatedBy($userId);
$this->getCategoryTable()->inserts($category);
}
$page = (int) $this->params()->fromRoute('page', 1);
$iteratorAdapter = new 'Zend'Paginator'Adapter'ArrayAdapter(iterator_to_array($this->getRowmaterialTable()->fetchAll()));
$category = new 'Zend'Paginator'Paginator($iteratorAdapter);
$viewModel= new ViewModel(array(
'fetchAllDatas' => $category->setCurrentPageNumber($page)->setItemCountPerPage('8'),
'categories' => iterator_to_array($this->getCategoryTable()->fetchAllCategoryStatusOn()),
'uom' => iterator_to_array($this->getUomTable()->fetchAllUomStatusOn()),
'flashMessages' => $this->flashMessenger()->getMessages(),
));
return $viewModel;
}
else
{
$this->flashMessenger()->addMessage("Please Login");
return $this->redirect()->toRoute("admin");
}