Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 05-06-2007 10:56:44

touff5
Nouveau membre
Date d'inscription: 05-06-2007
Messages: 2

[Résolu]"Jointure" de type n à n en utilisant le mapping

Bonjour à tous !

j'ai suivi les différents tutos proposés ici ainsi que certains ailleurs, je me suis pas mal documenté avec la doc du site officiel, mais je bute sur un point.

Pour indication je travaille avec le Zend Framework dernière version du 0.9 (0.9.2 ou 0.9.3 je ne sais plus où on en est).

Pour faire mon projet, une gestion d'oeuvre littéraires en ligne, j'ai pris pour base le tuto suivant :
Débuter avec le Zend Framework (approche MVC)

J'ai 3 tables :
oeuvre(id, titre, description,statutmodo)
categorise(id, id_oeuvre, id_categogie)
categorie(id, libelle)

J'ai poussé plus loin le tuto en intégrant les dépendances des tables dans les classes et j'arrive tres bien à faire une "jointure" en utilisant la méthode findClassViaAutreClass

exemple de récupération de la catégorie d'une oeuvre:

Code:

//récupére les catégories de l'oeuvre consultée
$lOeuvre = $oeuvre->find($id)->current();
$this->view->categories = $lOeuvre->findCategorieViaCategorise();

Ca marche, quand on veut le détail d'UNE oeuvre c'est niquel ! Mais ca ne fonctionne que si j'ai UN SEUL RESULTAT, et à un moment j'affiche une liste d'oeuvre (donc un JEU DE RESULTAT) et j'aimerais indiquer le(s) genre(s) de chaque oeuvre.

Comment faire ? Je ne vais quand meme pas boucler sur chaque oeuvre et faire à chaque fois un findCategorieViaCategorise ? Ca va multiplier de maniéres beaucoup trop importantes le nombre de requêtes à la base, si je veux afficher 20 oeuvres, ca voudrais dire que je dois faire 20 requetes à la base !
Y a pas une maniére plus économique ? Plus propre de faire ?

J'ai essayé pas mal de chose, mais je séche désespérement sad

Pour détailler voici le reste de mon code important pour la situation :
Le contrôleur de Oeuvre :

Code:

class OeuvreController extends Zend_Controller_Action{
    
//methode execute a chaque construction de l'objet
function init(){
    $this->initView();
    $this->view->baseUrl = $this->_request->getBaseUrl();
    Zend_Loader::loadClass('Oeuvre');
}

//la fonction qui est censé me renvoyer une liste d'oeuvre avec le genre
function indexAction(){
        $this->view->title = "Liste des oeuvres";
    $oeuvre = new Oeuvre();
    $this->view->oeuvres = $oeuvre->fetchAll("statutmodo = 1");
    $this->render();
}
}

La classe gérant le modéle Oeuvre

Code:

<?php
class Oeuvre extends Zend_Db_Table{
    protected  $_name = "oeuvre";
    
    protected $_dependentTables = array('Ecrit', 'Categorise');
        
}
?>

Classe gérant le modéle categorise

Code:

<?php
class Categorise extends Zend_Db_Table{
    protected  $_name = "categorise";
    protected $_dependentTables = array('Oeuvre', 'Categorie');
    protected $_referenceMap = array (
                'definit' => array ( 
                        'columns' => array('id_categorie'), 
                    'refTableClass' => 'Categorie', 
                    'refColumns' => 'id'), 
                'genre' => array ( 
                    'columns' => array('id_oeuvre'), 
                    'refTableClass' => 'Oeuvre', 
                    'refColumns' => 'id') 
                );
}
?>[b][/b]

Dernière modification par touff5 (05-06-2007 12:53:56)

Hors ligne

 

#2 05-06-2007 12:53:28

touff5
Nouveau membre
Date d'inscription: 05-06-2007
Messages: 2

Re: [Résolu]"Jointure" de type n à n en utilisant le mapping

J'ai appris qu'on ne pouvait pas faire plus économe sans coder soi même sa fonction.
Merci

Hors ligne

 

#3 05-06-2007 15:39:24

Julien
Membre
Date d'inscription: 16-03-2007
Messages: 501

Re: [Résolu]"Jointure" de type n à n en utilisant le mapping

En effet smile

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages