这又是一个理解问题,任何解释都表示赞赏:
我以前遇到过在我的视图中显示一个外键表的问题,现在有效,看起来如下:
这就是我想要的,但是: 我只得到第一行,但第二个集合当然有几个(它是带文件名的行)。
这是因为我的模型中的方法,如下所示:
public function getImportU($unitid)
{
$unitid = (int) $unitid;
$rowset = $this->tableGateway->select(['UnitID' => $unitid]);
$row = $rowset->current();
if (! $row) {
return null;
}
else{
return $row;
}
}
当然我有一个行对象,它返回当前行。所以我想,好吧我会尝试使用行集,之后看起来像这样:
public function getImportU($unitid)
{
$unitid = (int) $unitid;
$rowset = $this->tableGateway->select(['UnitID' => $unitid]);
//$row = $rowset->current();
if (! $rowset) {
return null;
}
else{
return $rowset;
}
}
我收到了一些错误:
注意:未定义的属性:Zend \ Db \ ResultSet \ ResultSet :: $ Importdate in 块引用
那么如何获取记录集,表中的所有记录都具有相同的unitid?以及如何在视图中调用它们。这可能不是什么大问题,但我在文档中找不到任何可用的东西。 EDIT1:添加相关代码。
这里我传递了我的Controller 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; ?>
答案 0 :(得分:2)
我相信你非常接近解决方案。 &#34; getImportU&#34;正如我所见,返回行集是正确的解决方案:
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是一个结果集,可以迭代,将它放在数组中是没有意义的。
您的错误也表明&#34; Importdate&#34;在blockquote表中找不到。 请检查表中是否存在该列(同时检查名称是否区分大小写,是否为&#34; Importdate&#34;,&#34; importdate&#34;或&#34; importDate&#34;?)