Как объединить две таблицы в Zend и прочитать полученные данные - PullRequest
3 голосов
/ 19 ноября 2010

У меня есть следующий запрос:

$usersTable = new Users();

$rowset = $usersTable->select()
    ->setIntegrityCheck(false)
    ->where( 'id = ?', $userId )
    ->join( 'Books', 'Books.userid = Users.id' );

Однако я не могу на всю жизнь понять, как читать полученный набор строк (список книг, связанных с пользователем).*

Буду ли я делать следующее?

foreach ($book in $rowset->Books) {
    print_r($book["book_name"]);
}

Ответы [ 2 ]

0 голосов
/ 01 декабря 2010

То, что вы называете $ rowset, на самом деле является выражением sql. Это должно работать:

$usersTable = new Users();

$sql = $usersTable->select()
    ->setIntegrityCheck(false)
    ->where( 'id = ?', $userId )
    ->join( 'Books', 'Books.userid = Users.id' );
$rowset = $usersTable->getAdapter()->fetchAll($sql);
0 голосов
/ 19 ноября 2010

Попробуйте что-то вроде:

$sql = $this->select()
->setIntegrityCheck(false)
->where( 'id = ?', $userId )
->join( 'Books', 'Books.userid = Users.id' )
);
$rowset = $this->fetchRow($sql);
foreach ($rowset as $book) {
    print_r($book["book_name"]);
}

Это происходит в вашей модели?

...