Изменение вывода Zend_Db_Select на Zend_Db_Table_Rowset - PullRequest
0 голосов
/ 23 июня 2010

У меня есть следующий код внутри класса, который расширяет Zend_Db_Table_Abstract:

public function fetchByFriends($id) {
    /*
     * SELECT * FROM list 
     * INNER JOIN friendship ON 
     * list.user_id = friendship.friend_id
     * WHERE friendship.user_id = ?
     */

    $select = $this->select()
                   ->from("list")
                   ->join("friendship", "list.user_id = friendship.friend_id")
                   ->where("friendship.user_id = ?", $id);
    $select->setIntegrityCheck(false); // allows joins within a DbTable

    $stmt = $select->query();
    return $this->fetchAll($stmt);
}

Хотя запрос работает нормально, возвращаемые данные имеют массив. Есть ли способ реорганизовать это так, что fetchAll возвращает его как Zend_Db_Table_Rowset, а не как массив?

1 Ответ

0 голосов
/ 23 июня 2010

Плохое исследование с моей стороны. Я нашел ответ в справочном руководстве Zend:

Расширенное использование

Пример # 27 Использование таблицы поиска для уточнения результатов fetchAll ()

$table = new Bugs();

// retrieve with from part set, important when joining
$select = $table->select(Zend_Db_Table::SELECT_WITH_FROM_PART);
$select->setIntegrityCheck(false)
       ->where('bug_status = ?', 'NEW')
       ->join('accounts', 'accounts.account_name =

bugs.reported_by ') -> где ('accounts.account_name =?', 'Bob');

$rows = $table->fetchAll($select);
...