0

我的桌子看起来像这样

    id      uniqueId    userId  album
    1       1           1       Example
    2       2           1       Example
    3       1           2       Example
    4       3           1       Example
    5       2           2       Example

我想在哪里找到专辑标题(哪里 id => 4 userId => 1uniqueId => 3但我无法访问它,只有另外两个)。

为此,我试图getAlbumsByUserId($userId)返回一个带有用户 1 相册的 RowSet 对象。然后我试图从返回的行集中获取专辑,uniqueId => 3

如下所示
$albumObject = $albumTable->getAlbumsByUserId(1);
$row = $albumObject->select(array('uniqueAlbumID' => 3))->current();

这是通过 UserId 获取专辑作为 RowSet 的函数

public function getAlbumsByUserId($userId)
    {
        $userId     = (int) $userId;
        $rowset = $this->tableGateway->select(array('user_id' => $userId));

        return $rowset;
    }

我可以在 RowSet 对象上做一个 foreach,用 if 语句找到 uniqueId,但我必须认为有更好的方法。

编辑:
我仍然没有找到从结果集中进行选择的方法,但是您可以在选择数组中执行 2 where 条件。

4

2 回答 2

2

也许我不明白你到底想要什么,但是如何让你的查询语句加入你有很好的函数集来在 Zend 中完成它。

在您的 AlbumTable.php 中:

public function getAlbum($userId, $uniqueAlbumId){
    $resultSet = $this->tableGateway->select()->where(array('userId = 1', 'uniqueId = 3'));
    $row = $resultSet->current();
    if(!$row){
         throw new Exception('No row found');
   }
    return $row;
}
于 2013-10-27T02:44:15.300 回答
0

首先,我相信返回的行集是一个迭代器,您可以在其上使用 foreach 并遍历每一行。但是,如果要返回某个 ID 值的专辑,则需要添加如下函数:

public function getAlbumById($id)
{
  $rowset = $this->tableGateway->select(array('id' => $id));
  $row = $rowset->current();
  return $row;
}

您可以在此处查看 ZF 关于 tablegateway 的网站:http: //framework.zend.com/manual/2.0/en/modules/zend.db.table-gateway.html

和有关 RowSet 的信息在这里:http: //framework.zend.com/manual/1.12/en/zend.db.table.rowset.html

于 2013-10-26T22:18:42.603 回答