2010-11-15 20 views
1

J'ai un problème avec zend. C'est ici. Je vais faire une sorte d'articles db, qui containt quelques infos. Chaque article est marqué avec 1 ou plusieurs tags (comme WordPress).zend retriving tag liste

J'ai un contrôleur (que ce soit l'index) et l'action (aussi l'index). Tout ce dont j'ai besoin est d'obtenir des articles et des balises, associés, lorsque l'utilisateur va sur le site/index/index.

J'ai 3 tables:

articles(idarticles, title..) 
tags(idtags, title) 
tagList(idarticles, idtags). 

Comment puis-je lire les tags, associés à l'article?

+0

semble être plus un SQL-question. J'ai relagged votre question :) –

Répondre

1

Le MVC de Zend n'inclut pas réellement un modèle, cependant, le quickstart guide outlines creating a model.

La façon la plus simple (pas nécessairement la meilleure façon), est de configurer la connexion dans votre application.ini, ou la configuration de l'adaptateur comme celui-ci (voir les Zend_Db_Adapter docs):

$db = new Zend_Db_Adapter_Pdo_Mysql(array(
    'host'  => '127.0.0.1', 
    'username' => 'webuser', 
    'password' => 'xxxxxxxx', 
    'dbname' => 'test' 
)); 

Ensuite, utilisez SQL pour sélectionner Les données.

//all articles 
$articles = $db->query('SELECT * FROM articles'); 
//a article's tags 
$tags = $db->query('SELECT * FROM tagList JOIN tags ON 
     (tagList.idtag = tags.idtags) WHERE idarticles = ?', $idarticles); 

Ceci est également TAged pour Zend_Db_Table, à l'utiliser pour accéder aux données, la première installation d'un adaptateur par défaut (ou encore, utilisez application.ini):

Zend_Db_Table::setDefaultAdapter($dbAdapter); 

Ensuite, obtenir des objets pour vous tables comme celui-ci :

$ariclesTable = new Zend_Db_Table('articles'); 

Pour obtenir tous les articles:

$articles = $articlesTable->fetchAll(); 

Pour obtenir les balises d'un article (un peu plus complexe ici, en utilisant un Zend_Db_Table_Select comme recommandé):

$select = $tagsTable->select(); 
//3rd argument must be empty array, so no joined columns are selected 
$select->join('tagList', 'tagList.idtag = tags.idtags', array()); 
$select->where('tagList.idarticles = ?', $idarticles); 
$tags = tagsTable->fetchAll($select); 
+0

Je ne suis pas sûr que la méthode 'getSelect' existe dans la table, peut-être vous où signifiant' select'. – Juan

+0

@Juan En effet j'étais, SO a besoin d'une sorte d'auto complète. Fixé maintenant –