2009-07-29 7 views
1

Je suis relativement nouveau dans le Zend Framework.Joindre des tables avec Zend Framework PHP

Je comprends l'utilisation de Zend_Table et peux obtenir des données en utilisant les fonctions Zend de la table associée à cette classe.

Par exemple, je une table vidéo et dans une autre table je l'association entre la vidéo et quelle catégorie il est

Im un peu perplexe comment un actif sélectionner comme ce qui suit dans le cadre:.

SELECT * FROM video, category O WH category. category_id = 3 et video. id = category. video_id

Tout conseil serait génial.

Merci.

Répondre

2
$db->select()->from('video')->joinInner('category','video.id = category.video_id')->where('category.category_id = ?',3) 

BTW: Il semble que vous ayez un mauvais design db. Vous devriez avoir category_id dans votre table vidéo (si 1 vidéo -> 1 catégorie) ou avoir une table de connexion (M: N), mais il semble erroné d'avoir l'id vidéo stocké dans la catégorie.

+0

à une courte FYI. $ sql = $ this-> getDbTable() -> select() -> où ('group_id =?', $ Group_id) -> joinInner ('category', 'video.id = category.video_id') -> où ('category.category_id =?', 3); $ resultat = $ this-> getDbTable() -> fetchRow ($ sql); – wenbert

+0

Oui, merci pour précieuse addition;) –

1

J'utiliser Zend_Db_Select:

$select = $this->db->select()->from(array('v' => 'video')) 
        ->join(array('c' => 'category'),'v.id = c.video_id') 
        ->where('c.category_id = ?', 3); 
    print_r($select->__toString()); 

Sortie:

SELECT `v`.*, `c`.* FROM `video` AS `v` INNER JOIN `category` AS `c` ON v.id = c.video_id WHERE (c.category_id = 3) 
+0

comment liriez-vous les colonnes de la table des catégories dans cet exemple. Est-il attendu que Zend_Db_Table_Abstract définisse la referenceMap ou puis-je passer un tableau de noms de colonnes de catégories spécifiques à lire? – emeraldjava