Php 连接数据的视图中的访问

Php 连接数据的视图中的访问,php,zend-framework2,Php,Zend Framework2,我目前正在从事Zend 2项目,在访问视图中的联接数据时遇到一些问题 首先,我创建了函数以获取AlbumTable中的数据: public function getAllAlbum() { $select = new Select(); $select->from('album') ->join('singer', 'singer.id = album.id') ->order('album.id');

我目前正在从事Zend 2项目,在访问视图中的联接数据时遇到一些问题

首先,我创建了函数以获取AlbumTable中的数据:

public function getAllAlbum()
{
    $select = new Select();
    $select->from('album')
            ->join('singer', 'singer.id = album.id')
            ->order('album.id');

    $resultSet = $this->tableGateway->selectwith($select);
    $resultSet->buffer();
    return $resultSet;
}
这个函数提供了我想要的所有数据。但是现在在视图中,我想访问这些数据。我试过很多东西,比如:
->id\u-album->singer.name
->id\u-album->singer['name']
->singer.name
->singer['name']
,但都没用

编辑:

我的控制器:

public function indexAction()
{
    $album = $this->getAlbumTable()->getAllAlbum();

    return new ViewModel(array(
        'listAlbum' => $album
    ));
}
以及以下观点:

<?
foreach ($this->listAlbum as $param)
{?>
    <tr class="tab_line">
        <td style="width:30%;">
            <a><?php echo $this->escapeHtml($param->name);?></a>
        </td>
        <td style="width:30%;">
            <a><?php echo $this->escapeHtml($param->id_album->nom);?></a>
        </td>
    </tr>
<?}?>
预支谢谢

PokeRwOw

您可以使用

   `return new ViewModel(array(
         'albums' => $resultSet,
     ));`
在函数“getAllAlbum”中,而不是仅返回$resultSet

然后使用foreach循环相册,如下所示:

foreach($albums as$album){echo$album['title'];}

编辑1

您可以更改:

`->join('singer', 'singer.id = album.id')'`
致:

仅选择所需字段的步骤

然后可以使用
$album=$album->toArray()将对象转换为数组

并在视图中使用:
foreach($alb专辑){echo$alb['singer_name'];}
我终于找到了我想要的。如果您想使用Zend 2.0和object进行连接,则需要执行以下操作(在我的示例中):


来源:

我已经在做这件事了,我编辑了我的帖子。我只想访问连接数据,因为在视图中我有“$param->id\u album->nom”,但它不工作。您能给我们显示
$album
的值吗?什么样的数据?我添加了$abum的var_转储。奇怪的是,我可以使用$param->name访问singer->name,但现在我无法访问album->name,正如您在var_转储中看到的,问题不是来自对db的请求,因为我有所有数据({[“id”]=>string(1)“2”[“name”]=>string(9)“Test”[“id_singer”]=>string(1)“2”[“name”]=>string(5)“Test2”})。但是我不知道如何访问来自连接的变量名。。。无论如何,我尝试了你的解决方案,但它不起作用。在$album->toArray()之后,我回到你的解决方案;在我的控制器中,它返回给我:**array(1){[0]=>array(4){[“inputFilter”]=>NULL[“id”]=>string(1)“2”[“name”]=>string(9)“test”[“id\u singer”]=>string(1)“2”}**所以我没有歌手的名字,但我在我的模型中添加了array(singer\u name,whateveryouwant)
`->join('singer', 'singer.id = album.id')'`
`->join('singer', 'singer.id = album.id', array(singer_name, whateveryouwant))`
public function getAllAlbum()
{
    $select = new Select();
    $select->from('album')
        ->join('singer', 'singer.id = album.id')
        ->order('album.id');

    $statement = $this->tableGateway->getSql()->prepareStatementForSqlObject($select);
    $resultSet = $statement->execute();
    $resultSet->buffer();
    return $resultSet;
}