如何从我的模型中获取多行

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"?)