2013-10-26 4 views
0

Моя таблица выглядит что-то вроде этогоВыберите строку из RowSet в ZF2

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 и uniqueId => 3 (где ID => 4, но я не буду иметь доступ к этому, только к другим двум).

Для этого я пытаюсь сделать getAlbumsByUserId($userId), который вернет объект RowSet с помощью Альбомы пользователя 1. Тогда я пытаюсь получить альбом из возвращенного набора строк с 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, чтобы найти UniqueID с, если заявление, но я должен думать, т вот лучший способ.

Редактировать:
Я до сих пор не нашел способ сделать выбор из набора результатов, но вы можете сделать 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; 
} 
+0

Похоже, это может быть то, что я ищу; соединитесь внутри. Я попробую. Спасибо :) – Jordan

+0

После просмотра соединения, я могу использовать только объединение для объединения двух таблиц, а не двух наборов строк, я обновил вопрос с помощью формата таблицы и того, что я пытаюсь сделать. – Jordan

+0

Возможно, попробуйте использовать Where with И если у вас есть оба номера. SELECT album FROM youtable WHERE userId = '1' AND uniqueId = '3'. – kilop

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 is here: http://framework.zend.com/manual/1.12/en/zend.db.table.rowset.html

+0

Проблема заключается в том, что я не могу искать по 'uniqueId', потому что он является уникальным для пользователя. Итак, мне нужно сначала получить альбомы для пользователя по их «userId», после чего мне нужно _select() _ от «uniqueId». – Jordan

 Смежные вопросы

  • Нет связанных вопросов^_^