Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 10-04-2009 13:05:15

jbunel
Membre
Lieu: Paris
Date d'inscription: 25-06-2008
Messages: 89
Site web

Jointure avec un objet Zend_Db_Table_Abstract

Bonjour,

Je cherche à récupérer les enregistrements d'une table jointe via une classe modèle TRubriques (qui hérite de Zend_Db_Table_Abstract)

Voici ma classe :

/**
* Modèle associé à la table rubriques
*/
class TRubriques extends Zend_Db_Table_Abstract
{
    protected $_name = 'rubriques';
    protected $_primary = 'idRubrique';
   
    protected $_referenceMap = array(
    "Famille" => array(
    "columns" => "estSousRubrique",
    "refTableClass" => "TFamilles",
    ));
}

Je fais un fetchAll sur l'objet TRubriques (qui est $this->_rubriqueTable) pour récupérer tous les enregistrements de ma table "rubriques"  :
$rubriques = $this->_rubriqueTable->fetchAll()->toArray();

Mais j'aimerai récupérer également le champ "libellé" de la table famille qui est représentée par la classe TFamilles.

Quelqu'un peut il m'aider ?
Par avance merci.

Hors ligne

 

#2 10-04-2009 16:32:33

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Jointure avec un objet Zend_Db_Table_Abstract

il faut écrire une requête
le mapping d'une table sur une jointure est possible mais compliqué

je te conseille de lire la doc de Zend_Db_Select et d'utiliser une jointure
Zend_Db_Table par défaut te remonte la liste des objets puis sur chacun tu peux activer la récupération de l'élément lié
si tu as 1000 élément dans ta table cela fais 1001 requêtes alors que tu as le même résultat avec un Select et un jointure

sinon tu peux regarder ça
http://sekaijin.ovh.org/?p=21
c'est expérimental mais ça donne une voie pour faire automatiquement une jointure dans un Zend_Db_Table

A+JYT

Hors ligne

 

#3 10-04-2009 16:51:09

jbunel
Membre
Lieu: Paris
Date d'inscription: 25-06-2008
Messages: 89
Site web

Re: Jointure avec un objet Zend_Db_Table_Abstract

J'ai trouvé un autre moyen.
Dans mon controller je fais un select de tous mes id :

$select = $this->_rubriqueTable->select()
->from($this->_rubriqueTable, "idRubrique");

$rubriques = $this->_rubriqueTable->fetchAll($select)->toArray();

ensuite dans ma vue :

<?php foreach ($this->rubriques as $idRubrique) : ?>
    <?php
        $tRubriques = new TRubriques();
        $rubrique = $tRubriques->find($idRubrique['idRubrique'])->current();
    ?>

puis pour récupérer le libelle de la table jointe :

<?php echo $rubrique->findParentTFamilles()->libelle; ?>

Et voilà, le tour est joué !
Merci sekaijin pour ta réponse

Hors ligne

 

#4 10-04-2009 17:49:10

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Jointure avec un objet Zend_Db_Table_Abstract

pour de simple libellé c'est plus efficace
il faut passer par une jointure lorsque le volume de donnée devient trop lourd en chargeant toute la table

exemple la table client et la table adresse de livraison
impossible de charger toute la table adresse pour faire le boulot

A+JYT

Hors ligne

 

#5 10-04-2009 21:00:25

jbunel
Membre
Lieu: Paris
Date d'inscription: 25-06-2008
Messages: 89
Site web

Re: Jointure avec un objet Zend_Db_Table_Abstract

Merci beaucoup pour les conseils !

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