2009-08-19 3 views
2

Ich verstehe die Verwendung von Zend_Table und kann Daten mit den Zend-Funktionen aus der Tabelle mit dieser Klasse verbunden erhalten. Zum Beispiel habe ich eine Video-Tabelle und in einer anderen Tabelle habe ich die Verbindung zwischen dem Video und welcher Kategorie es inJoining Tabellen innerhalb eines Modells in Zend PHP

Im ein wenig ratlos, wie man aktiv eine Auswahl wie die folgenden im Rahmen.

SELECT * FROM video,category WHERE category.category_id = 3 AND video.id = category.video_id 

Ich möchte dies innerhalb des Videomodells tun, das auf die Videotabelle verweist.

Antwort

0

Von dem, was Sie gepostet haben, scheint es, dass es eine Beziehung zwischen den Tabellen für Videos und Kategorien gibt: Eine Kategorie hat viele Videos und ein Video gehört zu einer Kategorie. Sie sollten this article auf Zend_Db_Table Beziehungen überprüfen.

1

Hier ist eine grobe Klasse. Es verwendet den Zend db-Adapter direkt, so dass das zend_db_table-Objekt die Beziehung nicht wirklich kennt, aber es funktioniert.

class Video extends Zend_Db_Table 
{ 
    public function doQueryWithSql($id) 
    { 
    $qy = " SELECT * FROM video,category WHERE category.category_id = $id AND video.id = category.video_id "; 
    return $this->getAdapter()->fetchAll($qy); 
    } 

    public function doQueryWithObject($id) 
    { 
    $select = $this->getAdapter()->select(); 
    $select->from(array('v'=>'video')) 
      ->join(array('c'=>'category'),'v.id = c.video_id') 
      ->where("c.category_id = $id"); 
    return $this->getAdapter()->fetchAll($select); 
    } 
}