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

userId => 1アルバム タイトルの場所と(id => 4 の場合)を見つけたいのですがuniqueId => 3、それにはアクセスできません。他の 2 つだけです)。

これを行うためにgetAlbumsByUserId($userId)、ユーザー 1 のアルバムを含む RowSet オブジェクトを返すことを試みています。次に、返された行セットからアルバムを取得しようとしてuniqueId => 3

いますが、以下のようなものは機能しません
$albumObject = $albumTable->getAlbumsByUserId(1);
$row = $albumObject->select(array('uniqueAlbumID' => 3))->current();

UserId ごとに Albums を RowSet として取得する関数です

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

        return $rowset;
    }

if ステートメントで uniqueId を見つけるために、RowSet オブジェクトで foreach を実行することもできますが、もっと良い方法があると考えなければなりません。

編集:
私はまだ結果セットから選択する方法を見つけていませんが、選択配列で条件を2つ実行できます。

4

2 に答える 2

0

まず、返される行セットは、 foreach を使用して各行を反復できる反復子であると思います。ただし、特定の ID 値のアルバムを返したい場合は、次のような関数を追加する必要があります。

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

tablegateway に関する ZF のサイトは、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 に答える