Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour, le problème est simple, et j'ai vu beaucoup de posts similaires dans le forum, mais aucun ne me permet de faire ce que je veux. Pire, plus je cherche dans les forums, plus je tombe sur de nouvelles choses / solutions, et je suis maintenant complètement perdu.
Bref, pour remettre ça au propre, voici ce que je veux faire:
J'ai une table entries
CREATE TABLE `entries` ( `id` int(11) NOT NULL auto_increment, `title` varchar(255) NOT NULL default '', `content` text, `cat_id` int(11) NOT NULL default '0', PRIMARY KEY (`id`) ) TYPE=MyISAM CHARACTER SET `utf8`;
et une table categories:
CREATE TABLE `categories` ( `id` int(11) NOT NULL auto_increment, `name` varchar(255) NOT NULL default '', PRIMARY KEY (`id`) ) TYPE=MyISAM CHARACTER SET `utf8`;
Le modèle (similaire pour categories):
class Entries extends Zend_Db_Table { protected $_name = 'entries'; }
Dans mon controller EntryController j'ai simplement:
function indexAction() { $this->view->title = "Entries"; $entry= new Entries(); $this->view->entries= $entry->fetchAll(); }
Ce qui me permet de lister les Entries dans ma vue entry/index.phtml, grâce à un <?php foreach($this->entries as $entry) : ?> dans lequel je récupère $entry->title; ...
Bien... Maintenant je voudrais pouvoir afficher le nom de la categorie dans la vue (index.phtml). Car actuellement je n'ai accès qu'à cat_id.
C'est là que je bloque.
- Dois-je utiliser _dependentTables?
- Dois-je utiliser Zend_Db_Select dans mon controller pour faire un Join? J'ai essayé mais je n'ai pas réussi à obtenir de résultats concluants...
Bref, si quelqu'un a un peu de temps pour m'aider à démarrer (ou indiquer un bon tutorial), MERCI d'AVANCE!
Dernière modification par pozowebs (10-07-2008 17:25:52)
Hors ligne
Rajoute une méthode getEntries() dans ton Entries.php
public function getEntries() { $select = $this->select (); $select->setIntegrityCheck ( false ); // pour le join sinon erreur $select->from ( $this )->join ( 'categories', 'cat_id = categories.id', array ('name' ) ); return $this->fetchAll ( $select ); }
et dans le controleur :
$this->view->title = "Entries"; $entry= new Entries(); $this->view->entries= $entry->getEntries();
Hors ligne
Parfait, c'est simple et ça marche, MERCI!
[HS]Bon, maintenant je vais quand même essayer de comprendre les histoires de _dependentTables, parce que je ne vois toujours pas à quoi ça sert. [/HS]
Hors ligne