2010-06-23 6 views
0

J'ai le code suivant à l'intérieur d'une classe qui étend Zend_Db_Table_Abstract:Modification de la sortie de Zend_Db_Select à Zend_Db_Table_Rowset

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); 
} 

Alors que la requête fonctionne très bien les données renvoyées sont d'un tableau. Existe-t-il un moyen de refactoriser cela pour que fetchAll le renvoie comme Zend_Db_Table_Rowset, plutôt que comme un tableau?

Répondre

0

Mauvaise recherche de ma part. J'ai trouvé la réponse dans le manuel de référence Zend:

Advanced usage

Exemple # 27 l'aide d'une table de recherche pour affiner les résultats de 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 » -> où ('accounts.account_name =?', 'Bob');

$rows = $table->fetchAll($select); 
Questions connexes