zend-framework - 这个结果是只向前的结果集,不支持向前移动后调用rewind()
问题描述
我想迭代 à 表以查看表数据 2 次(在列表框和下拉按钮中),当我使用一个 foreach 用于 1 个输入时没关系,但是当我使用 2 个 foreach 用于 2 个输入时,我发现了我搜索的波纹管错误,我发现我必须使用 $resultSet->buffer(); 当我将它替换为我的桌子时,同样的错误停留:
文件:
C:\xampp\htdocs\gestion-commercial-03\vendor\zendframework\zend-db\src\Adapter\Driver\Pdo\Result.php:182
Message:
This result is a forward only result set, calling rewind() after moving forward is not supported
Stack trace:
#0 C:\xampp\htdocs\gestion-commercial-03\vendor\zendframework\zend-db\src\ResultSet\AbstractResultSet.php(241): Zend\Db\Adapter\Driver\Pdo\Result->rewind()
#1 C:\xampp\htdocs\gestion-commercial-03\module\Documentachat\view\documentachat\documentachat\index.phtml(138): Zend\Db\ResultSet\AbstractResultSet->rewind()
#2 C:\xampp\htdocs\gestion-commercial-03\vendor\zendframework\zend-view\src\Renderer\PhpRenderer.php(506): include('C:\\xampp\\htdocs...')
#3 C:\xampp\htdocs\gestion-commercial-03\vendor\zendframework\zend-view\src\View.php(207): Zend\View\Renderer\PhpRenderer->render(NULL)
#4 C:\xampp\htdocs\gestion-commercial-03\vendor\zendframework\zend-view\src\View.php(236): Zend\View\View->render(Object(Zend\View\Model\ViewModel))
#5 C:\xampp\htdocs\gestion-commercial-03\vendor\zendframework\zend-view\src\View.php(200): Zend\View\View->renderChildren(Object(Zend\View\Model\ViewModel))
#6 C:\xampp\htdocs\gestion-commercial-03\vendor\zendframework\zend-mvc\src\View\Http\DefaultRenderingStrategy.php(105): Zend\View\View->render(Object(Zend\View\Model\ViewModel))
#7 [internal function]: Zend\Mvc\View\Http\DefaultRenderingStrategy->render(Object(Zend\Mvc\MvcEvent))
#8 C:\xampp\htdocs\gestion-commercial-03\vendor\zendframework\zend-eventmanager\src\EventManager.php(490): call_user_func(Array, Object(Zend\Mvc\MvcEvent))
#9 C:\xampp\htdocs\gestion-commercial-03\vendor\zendframework\zend-eventmanager\src\EventManager.php(248): Zend\EventManager\EventManager->triggerListeners('render', Object(Zend\Mvc\MvcEvent))
#10 C:\xampp\htdocs\gestion-commercial-03\vendor\zendframework\zend-mvc\src\Application.php(384): Zend\EventManager\EventManager->triggerEvent(Object(Zend\Mvc\MvcEvent))
#11 C:\xampp\htdocs\gestion-commercial-03\vendor\zendframework\zend-mvc\src\Application.php(356): Zend\Mvc\Application->completeRequest(Object(Zend\Mvc\MvcEvent))
#12 C:\xampp\htdocs\gestion-commercial-03\public\index.php(29): Zend\Mvc\Application->run()
#13 {main}
桌子 :
<?php
///=======================DocumentachatTable factory=========================
namespace Documentachat\Model;
use Zend\Db\ResultSet\ResultSet;
use Zend\Db\Sql\Expression;
use Zend\Db\Sql\Select;
use Zend\Db\Sql\Sql;
use Zend\Db\Sql\Where;
use Zend\Db\TableGateway\TableGateway;
use Zend\Paginator\Adapter\DbSelect;
use Zend\Paginator\Paginator;
class DocumentachatTable
{
protected $tableGateway;
private $lastinserted;
public function __construct(TableGateway $tableGateway)
{
$this->tableGateway = $tableGateway;
}
public function fetchAll($paginated = false)
{
if ($paginated) {
// create a new Select object for the table album
$select = new Select('achat__document');
// create a new result set based on the Album entity
$resultSetPrototype = new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new Documentachat());
// create a new pagination adapter object
$paginatorAdapter = new DbSelect(
// our configured select object
$select,
// the adapter to run it against
$this->tableGateway->getAdapter(),
// the result set to hydrate
$resultSetPrototype->buffer();
$resultSetPrototype
);
$select->where(array('achat__document.deleted' => 1));
$paginator = new Paginator($paginatorAdapter);
return $paginator;
}
$select = $this->tableGateway->getSql()->select();
$select->where(array('achat__document.deleted' => 1));
$results = $this->tableGateway->selectWith($select);
return $results;
}
public function lastInserted()
{
return $this->lastinserted;
}
public function getDocument($id)
{
$id = (int)$id;
$rowset = $this->tableGateway->select(array('id' => $id));
$row = $rowset->current();
if (!$row) {
throw new \Exception("Could not find row $id");
}
return $row;
}
public function getLastCount($idType)
{
$idType = (int)$idType;
$select = $this->tableGateway->getSql()->select();
$select->where->equalTo('id_type', $idType);
$select->order('count desc');
$rowset = $this->tableGateway->selectWith($select);
$row = $rowset->current();
if (!$row) {
return 0;
}
return $row;
}
public function saveDocument(Documentachat $document)
{
$data = array(
'reference' => $document->reference,
'id_type' => $document->idType,
'id_fournisseur' => $document->idFournisseur,
'address' => $document->address,
'deleted' => 1,
'date_doc' => $document->dateDoc
);
$id = (int)$document->id;
if ($id == 0) {
$data['count'] = $this->getLastCount($document->idType)->count + 1;
$this->tableGateway->insert($data);
$this->lastinserted = $this->tableGateway->getLastInsertValue();
} else {
if ($this->getDocument($id)) {
$this->tableGateway->update($data, array('id' => $id));
} else {
throw new \Exception('Documentachat id does not exist');
}
}
}
public function deleteDocument($id)
{
$data = array(
'deleted' => 0,
);
$this->tableGateway->update($data, array('id' => $id));
}
public function searchDocument($query)
{
$select = $this->tableGateway->getSql()->select();
$select->where(array('achat__document.deleted' => 1));
$select->where->like('achat__document.reference', '%' . $query . '%');
$results = $this->tableGateway->selectWith($select);
return $results;
}
看法:
<?php
$title = 'Documentachat';
$this->headTitle($title);
?>
<div class="container-fluid container-fullw bg-white ng-scope">
<!-- ======partie haut-->
<div class="panel border-dark panel-white bg-white margin-top-20" style="box-shadow: 0 3px 6px rgb(0 0 0 / 16%), 0 3px 6px rgb(0 0 0 / 23%);">
<div class="panel-body Shadows-2 ">
<!-- =========== inputs filtre-->
<div class="row">
<div class="col-md-2 form-group">
<label> Date début </label>
<input type="date" id="dateMinI" class="form-control" name="dateMinI">
</div>
<div class="col-md-2 form-group">
<label> Date fin </label>
<input type="date" id="dateMaxI" class="form-control" name="dateMaxI" >
</div>
<div class="col-md-2 form-group">
<label> N° Document </label>
<input type="text" id="Reference" class="form-control" name="Reference" value autocomplete="off">
</div>
<div class="col-md-2 form-group">
<label> Fournisseur </label>
<input type="text" id="fournisseur" class="form-control" name="fournisseur" >
</div>
<div class="col-md-2 form-group">
<label> Document Type </label>
<select id="doctype" class="form-control" name="doctype">
<option value="">---</option>
<?php foreach ($this->docTypes as $item) : ?>
<option value=<?php echo $item->id; ?> > <?php echo $item->label; ?> </option>
<?php endforeach;
?>
</select>
</div>
<div class="col-md-2">
<div class=" padding-20">
<button type="button" id="sendid" class="btn btn-primary btn-block">
<i class="fa fa-filter" aria-hidden="true"></i>
OK
</button>
</div>
</div>
</div>
<!-- =========== inpouts filtre-->
<div class="row padding-20 bg-light-grey">
<button type="button" data-toggle="modal" data-target="#transformerModal" id="transformer"
class="btn btn-sm btn-default">
<i class="fa fa-arrow-right" aria-hidden="true"></i>
Transformer
</button>
<div class="btn-group pull-right">
<button type="button " class="btn btn-primary btn-sm dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
Ajouter <span class="caret"></span>
</button>
<ul class="dropdown-menu" role="menu">
<li class="disabled"><a href="#">
<i class=" btn-sm fa fa-file-text-o " aria-hidden="true"></i>
DEVIS</a></li>
<li>
<a target="_blank" href="/document/add/5">
<i class=" btn-light-purple fa fa-file-text-o btn-sm " aria-hidden="true"></i>
BON DE COMMANDE</a>
</li>
<li>
<a target="_blank" href="/document/add/19">
<i class="btn btn-green fa fa-file-text-o btn-sm" aria-hidden="true"></i>
BON DE LIVRAISON</a>
</li>
<li>
<a target="_blank" href="/document/add/20">
<i class=" btn-light-orange fa fa-file-text-o btn-sm " aria-hidden="true"></i>
BON DE RETOUR</a>
</li>
<li class="disabled"><a href="#">
<i class="btn btn-light-azure btn-sm fa fa-file-text-o" aria-hidden="true"></i>
FACTURE INTERNE</a></li>
<li class="disabled"><a href="#">
<i class="btn btn-dark-azure btn-sm fa fa-file-text-o" aria-hidden="true"></i>
FACTURE A COMPTABILISER</a></li>
<li class="disabled"><a href="#">
<i class=" btn-sm fa fa-file-text-o " aria-hidden="true"></i>
FACTURE COMPTABILISEE </a></li>
<li class="disabled"><a href="#">
<i class=" btn-dark-orange btn-sm fa fa-file-text-o " aria-hidden="true"></i>
FACTURE DE RETOUR</a></li>
<li>
<a target="_blank" href="/document/add/33">
<i class=" btn-dark-yellow fa fa-file-text-o btn-sm " aria-hidden="true"></i>
AVOIR FINANCIER</a>
</li>
</ul>
</div>
</div>
<div class="dropdown">
<button class="btn btn-primary dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
Ajouter
<span class="caret"></span>
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
<?php
foreach ($this->docTypes as $item) { ?>
<li><a href="<?= $this->url('documentachat', array('action'=>'add', 'id' => $item->id));?>"><?= $item->label?></a></li>
<?php } ?>
<?php ?>
</ul>
</div>
</div>
</div>
模块.config.php
<?php
return array(
'controllers' => array(
'invokables' => array(
'Documentachat\Controller\Documentachat' => 'Documentachat\Controller\DocumentachatController',
'Documentachat\Controller\Parametreachat' => 'Documentachat\Controller\ParametreachatController',
'Documentachat\Controller\DocArticle' => 'Documentachat\Controller\DocArticleController',
),
),
'router' => array(
'routes' => array(
'documentachat' => array(
'type' => 'segment',
'options' => array(
'route' => '/documentachat[/:action][/:id]',
'constraints' => array(
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id' => '[0-9]+',
),
'defaults' => array(
'controller' => 'Documentachat\Controller\Documentachat',
'action' => 'index',
),
),
),
'parametreachat' => array(
'type' => 'segment',
'options' => array(
'route' => '/parametreachat[/:action][/:id]',
'constraints' => array(
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id' => '[0-9]+',
),
'defaults' => array(
'controller' => 'Documentachat\Controller\Parametreachat',
'action' => 'index',
),
),
),
'docarticle' => array(
'type' => 'segment',
'options' => array(
'route' => '/docarticle[/:action][/:id]',
'constraints' => array(
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id' => '[0-9]+',
),
'defaults' => array(
'controller' => 'Documentachat\Controller\DocArticle',
'action' => 'index',
),
),
),
),
),
'view_manager' => array(
'template_path_stack' => array(
'documentachat' => __DIR__ . '/../view',
),
),
);
解决方案
推荐阅读
- php - spatie/laravel-permissions assignRole 方法导致错误 [完整性约束违规:1452 无法添加或更新子行]
- c# - ASP MVC 路由不匹配
- c# - 无法在新的 Chrome 浏览器选项卡中打开 pdf
- reactjs - 在 @connect 装饰器回调中存储参数
- python - Facebook API - 如何在提取之前访问视频见解?
- database - CrateIO 插入失败
- mysql - 导入数据时在mysql中quotechar是什么意思?
- c# - .NET Mutex 导致 Windows 窗体中的 GUI 线程饥饿
- neo4j - Neo4j:数字属性键
- android - 奖励广告是否允许检查用户到目前为止获得的奖励?