如何从我的模型中获取多行
how to get several rows out of my model
这又是一个理解问题,欢迎任何解释:
我之前遇到过在我看来显示外键 table 的问题,现在可以了,如下所示:
这正是我想要的,但是:
我只得到第一行,但第二个集合中当然有几个(它是带有文件名的行)。
这是因为我的模型中的方法,如下所示:
public function getImportU($unitid)
{
$unitid = (int) $unitid;
$rowset = $this->tableGateway->select(['UnitID' => $unitid]);
$row = $rowset->current();
if (! $row) {
return null;
}
else{
return $row;
}
}
当然我有一个行对象,它 returns 当前行。所以我想,好吧,我会尝试使用行集,之后它看起来像这样:
public function getImportU($unitid)
{
$unitid = (int) $unitid;
$rowset = $this->tableGateway->select(['UnitID' => $unitid]);
//$row = $rowset->current();
if (! $rowset) {
return null;
}
else{
return $rowset;
}
}
我收到一些错误消息:
Notice: Undefined property: Zend\Db\ResultSet\ResultSet::$Importdate in
Blockquote
那么如何得到一个recordcollection,table中所有的记录都具有相同的unitid?以及如何在视图中调用它们。这可能没什么大不了的,但我在文档中找不到任何可用的东西。
EDIT1:添加相关代码。
在这里,我在我的控制器 indexAction 中传递 ViewModel
:
return new ViewModel([
'projects' => $this->projectTable->fetchAll(),
'dcls' => $this->table,
//'id' =>$this->authService,
]);
这是我的 index.phtml 的片段:
foreach ($projects as $project) :
//var_dump(get_object_vars($project));
?>
<tr>
<td><?= $project['Projectname']?></td>
<td><?= $project['ProjectShortcut']?></td>
<td><?= $project['ProjectCiNumber']?></td>
<td><?= $project['Unitname']?></td>
<td><?= $project['UnitShortcut']?></td>
<td><?= $project['UnitCiNumber']?></td>
<td><?= $project['UnitID']?></td>
</tr>
<?php
$dclsx=$dcls->getImportU($project['UnitID']);
// var_dump($dclss);
if ( empty ($dclsx)==false){ ?>
<tr>
<th></th>
<th>filename</th>
<th>importdate</th>
<th>importuser</th>
<th>importok</th>
</tr>
<?php
$dclss=array($dclsx);
// var_dump($dclss);
foreach ( $dclss as $dcl) :
?>
<tr>
<td> </td>
<td><?= $dcl->filename?></td>
<td><?= $dcl->Importdate?></td>
<td><?= $dcl->Importuser?></td>
</tr>
?php
endforeach;
}
endforeach; ?>
我相信您已经非常接近解决方案了。
"getImportU" 在我看来,返回行集是正确的解决方案:
public function getImportU($unitid)
{
$unitid = (int) $unitid;
$rowset = $this->tableGateway->select(['UnitID' => $unitid]);
if (! $rowset) {
return null;
}
else{
return $rowset;
}
}
您的观点应更改为:
<?php
$dclss=array($dclsx);
// var_dump($dclss);
foreach ( $dclss as $dcl) :
至:
<?php
foreach ( $dclsx as $dcl) :
$dclsx是resultset,可以迭代,放在数组里没有意义
您的错误还表明无法在块引用 table 中找到 "Importdate"。
请检查 table 处是否存在该列(同时检查名称是否区分大小写,是 "Importdate"、"importdate" 还是 "importDate"?)
这又是一个理解问题,欢迎任何解释:
我之前遇到过在我看来显示外键 table 的问题,现在可以了,如下所示:
这正是我想要的,但是: 我只得到第一行,但第二个集合中当然有几个(它是带有文件名的行)。
这是因为我的模型中的方法,如下所示:
public function getImportU($unitid)
{
$unitid = (int) $unitid;
$rowset = $this->tableGateway->select(['UnitID' => $unitid]);
$row = $rowset->current();
if (! $row) {
return null;
}
else{
return $row;
}
}
当然我有一个行对象,它 returns 当前行。所以我想,好吧,我会尝试使用行集,之后它看起来像这样:
public function getImportU($unitid)
{
$unitid = (int) $unitid;
$rowset = $this->tableGateway->select(['UnitID' => $unitid]);
//$row = $rowset->current();
if (! $rowset) {
return null;
}
else{
return $rowset;
}
}
我收到一些错误消息:
Notice: Undefined property: Zend\Db\ResultSet\ResultSet::$Importdate in Blockquote
那么如何得到一个recordcollection,table中所有的记录都具有相同的unitid?以及如何在视图中调用它们。这可能没什么大不了的,但我在文档中找不到任何可用的东西。 EDIT1:添加相关代码。
在这里,我在我的控制器 indexAction 中传递 ViewModel
:
return new ViewModel([
'projects' => $this->projectTable->fetchAll(),
'dcls' => $this->table,
//'id' =>$this->authService,
]);
这是我的 index.phtml 的片段:
foreach ($projects as $project) :
//var_dump(get_object_vars($project));
?>
<tr>
<td><?= $project['Projectname']?></td>
<td><?= $project['ProjectShortcut']?></td>
<td><?= $project['ProjectCiNumber']?></td>
<td><?= $project['Unitname']?></td>
<td><?= $project['UnitShortcut']?></td>
<td><?= $project['UnitCiNumber']?></td>
<td><?= $project['UnitID']?></td>
</tr>
<?php
$dclsx=$dcls->getImportU($project['UnitID']);
// var_dump($dclss);
if ( empty ($dclsx)==false){ ?>
<tr>
<th></th>
<th>filename</th>
<th>importdate</th>
<th>importuser</th>
<th>importok</th>
</tr>
<?php
$dclss=array($dclsx);
// var_dump($dclss);
foreach ( $dclss as $dcl) :
?>
<tr>
<td> </td>
<td><?= $dcl->filename?></td>
<td><?= $dcl->Importdate?></td>
<td><?= $dcl->Importuser?></td>
</tr>
?php
endforeach;
}
endforeach; ?>
我相信您已经非常接近解决方案了。 "getImportU" 在我看来,返回行集是正确的解决方案:
public function getImportU($unitid)
{
$unitid = (int) $unitid;
$rowset = $this->tableGateway->select(['UnitID' => $unitid]);
if (! $rowset) {
return null;
}
else{
return $rowset;
}
}
您的观点应更改为:
<?php
$dclss=array($dclsx);
// var_dump($dclss);
foreach ( $dclss as $dcl) :
至:
<?php
foreach ( $dclsx as $dcl) :
$dclsx是resultset,可以迭代,放在数组里没有意义
您的错误还表明无法在块引用 table 中找到 "Importdate"。 请检查 table 处是否存在该列(同时检查名称是否区分大小写,是 "Importdate"、"importdate" 还是 "importDate"?)