IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend Framework PHP Discussion :

join table


Sujet :

Zend Framework PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Juin 2011
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 74
    Par défaut join table
    Je voudrais utiliser joinLeft dans MVC Model
    J'ai deux tables: d et n, il y a d.poids et n.poids, je veux retirer les deux poids, mais je sais pas dans mon view, comment à faire ça?
    dans MVC Controller:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $dDao=new D();
    $nDao=new N();
    $result=$dDao->calPoids();
    $this->view->array_poids=$result;
    dans MVC Model:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public function calPoids()
    {
    $select=$this->select()
    ->from('d','d.poids')
    ->joinLeft('n','d.id=n.id','n.poids');
    return $this->fetchAll($select);
    }
    dans MVC view:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php
    foreach($this->array_poids as $poids)
    {
    echo $poids->getPoids();  // ici je voudrais retirer n.poids et d.poids, comment à faire ça? 
    }
    ?>
    En effet, je voudaris retirer n.poids et d.poids, puis calcule n.poids+d.poids
    Merci!!

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 152
    Par défaut
    Bonjour,

    lors de la construction de ta requête utilise des alias pour distinguer les deux champs 'n.poids' et 'd.poids':

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public function calPoids()
    {
    $select=$this->select()
    ->from('d',array('poids1'=>'d.poids'))
    ->joinLeft('n','d.id=n.id', array('poids2'=>'n.poids'));
    return $this->fetchAll($select);
    }
    Pour récupérer ces deux valeurs de poids dans ta vue il te suffit donc de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    foreach($this->array_poids as $poids)
    {
    echo $poids['poids1'];  // ici  tu récupère d.poids
    echo $poids['poids2']; // et n.poids
    }
    ?>

  3. #3
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Juin 2011
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 74
    Par défaut
    Citation Envoyé par flilou Voir le message
    Bonjour,

    lors de la construction de ta requête utilise des alias pour distinguer les deux champs 'n.poids' et 'd.poids':

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public function calPoids()
    {
    $select=$this->select()
    ->from('d',array('poids1'=>'d.poids'))
    ->joinLeft('n','d.id=n.id', array('poids2'=>'n.poids'));
    return $this->fetchAll($select);
    }
    Pour récupérer ces deux valeurs de poids dans ta vue il te suffit donc de faire:

    [code]
    <?php
    foreach($this->array_poids as $poids)
    {
    echo $poids['poids1']; // ici tu récupère d.poids
    echo $poids['poids2']; // et n.poids
    }
    ?>
    Merci, mais $poids['poids1']; n'est pas correct,érreur: Cannot use object as array

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 152
    Par défaut
    Et si tu essayes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    foreach($this->array_pois as $id=>$poids)
        echo $poids['poids1'];
    Est ce ke ca change quelque chose?

  5. #5
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Juin 2011
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 74
    Par défaut
    Citation Envoyé par flilou Voir le message
    Et si tu essayes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    foreach($this->array_pois as $id=>$poids)
        echo $poids['poids1'];
    Est ce ke ca change quelque chose?
    C'est pas correct, $id existe pas

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 152
    Par défaut
    as-tu essayé au moins?

    $id correspond à la valeur de la clé de ton tableau associatif $this->array_poids car $array_poids doit être de la forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    array('0'=>array('poid1'=>1, 'poid2'=>2),
             '1'=>array('poid1'=>3, 'poid2'=>4),
             .....)
    dans cet exemple, $id prendra les valeurs 0, puis 1, ... au fur et à mesure que tu parcoures les éléments de ton tableau dans ta boucle for.

    $id n'a rien à voir avec ton champ 'id' de ta table, t'aurais pu faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    foreach($this->array_poids as $key=>$value)
        echo $value['poids1'];

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/10/2013, 13h52
  2. Update join table
    Par sampla dans le forum Débuter
    Réponses: 2
    Dernier message: 22/07/2012, 09h28
  3. [JDO] Annotations pour intégrer une relation 1-N par map dans sa join table
    Par Blustuff dans le forum Persistance des données
    Réponses: 0
    Dernier message: 31/01/2009, 13h33
  4. Aide requete Join + table relationnelle
    Par yann5559 dans le forum Requêtes
    Réponses: 5
    Dernier message: 31/07/2008, 15h13
  5. Join entre 2 tables provenant de Base de donnees differentes
    Par edmotets dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 24/11/2005, 08h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo