Php 连接数据的视图中的访问
我目前正在从事Zend 2项目,在访问视图中的联接数据时遇到一些问题 首先,我创建了函数以获取AlbumTable中的数据: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');
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;
}