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

Symfony PHP Discussion :

jointure sous symfony [1.x]


Sujet :

Symfony PHP

  1. #1
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 16
    Par défaut jointure sous symfony
    salam tous le monde
    d'abord je travail avec doctrine et sf 1.4
    s'il vous plait j'ai une jointure entre de table 'article' et 'creat_article' et je veux afficher les colonnes de la premier table et faire une jointure pour afficher une autre colonne dans la deuxième table
    voila le code que j'ai fait dans l'action.class.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public function executeIndex(sfWebRequest $request)
      {
        $this->articles = Doctrine_Query::create()
           ->select('a.*, c.date_creat')
     
    	  ->from('Article a, a.CreatArticle c')
            //->where('c.date_creat > ?', date('Y-m-d H:i:s', time() - 86400 * 30));
     
          ->execute();
     
     
      }
    pour recupérer ces données j'ai fait le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php foreach ($articles as $article): ?>
     
            	   <span class="custom_image">
    			<img src="uploads/produits/<?php echo $article->getImage() ?>" alt="<?php echo $article->getLibelle() ?>" title="<?php echo $article->getLibelle() ?>"/>
    			</span>
    <p class="desc">
     
             <?php echo $article->getDescription() ?></p>
              <p class="spec"><a href="#" class="rm">Plus</a> &nbsp;|&nbsp; <a href="#" class="com">Commenter </a> &nbsp;|&nbsp; <span class="date">
     
    <?php echo $article->CreatArticle()->getDateCreat()  ?></span></p>
            </div>
     
     
        <?php endforeach; ?>
    mais ça marche pas il m'affiche ecran banc ni le resultat demandé ni ou il existe l'erreur
    et merci

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 76
    Par défaut
    C'est ta jointure qui est mal faite.
    Tu as pas fait la liaison entre les deux tables du coup il te retourne aucun enregistrement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
     
    public function executeIndex(sfWebRequest $request)
      {
        $this->articles = Doctrine_Query::create()
           ->select('a.*, c.date_creat')
     
    	  ->from('Article a, a.CreatArticle c')
              // il manque quelque chose du genre
              ->where('a.id_article = c.id_article')
              ->where('c.date_creat > ?', date('Y-m-d H:i:s', time() - 86400 * 30));
     
          ->execute();
     
     
      }

    tu peux aussi utiliser la fonction leftJoin() pour faire une jointure

  3. #3
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 16
    Par défaut
    merci pour votre reponse
    mais meme si j'ai changer la formule de la requete la date ne s'affiche pas
    je pense que l'erreur existe aussi dans la methode de recuperation des données

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $article->CreatArticle()->getDateCreat()  ?>
    j'ai changé cette mathode avec un autre qui est dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $article['CreatArticle']['date_creat']  ?>

    mais il m"aaffiche cette erreur :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    No description for object of class "CreatArticle"

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 76
    Par défaut
    Citation Envoyé par goood Voir le message
    merci pour votre reponse
    mais meme si j'ai changer la formule de la requete la date ne s'affiche pas
    je pense que l'erreur existe aussi dans la methode de recuperation des données

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $article->CreatArticle()->getDateCreat()  ?>
    j'ai changé cette mathode avec un autre qui est dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $article['CreatArticle']['date_creat']  ?>

    mais il m"aaffiche cette erreur :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    No description for object of class "CreatArticle"

    C'est normal qu'il affiche une erreur parce que


    renvoi un objet et pas un tableau

    essayez
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $article->CreatArticle->getDateCreat()  ?>
    ( il ne faut pas de paranthèse apres CreatArticle)

  5. #5
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 16
    Par défaut
    Citation Envoyé par Joauc Voir le message
    C'est normal qu'il affiche une erreur parce que


    renvoi un objet et pas un tableau

    essayez
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $article->CreatArticle->getDateCreat()  ?>
    ( il ne faut pas de paranthèse apres CreatArticle)


    merci , mais apres que que j'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $article->CreatArticle->getDateCreat()  ?>
    il m'a rien donnée ni erreur ni la date que je cherche a l'affiché le champ est vide
    est ce que je doit integré quelque chose dans les models ou les actions ??

    merci beaucoup de m'avoir aidé

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 76
    Par défaut
    il faudrait connaitre la structure sous laquelle est renvoyée la date.
    Peut être qu'il renvoie directement la date je ne sais plus trop comment fonctionne .

    qu'est-ce que tu obtiens quand tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <?php var_dump($article)?>
    ?

  7. #7
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 16
    Par défaut
    j'ai integré l'instruction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php var_dump($article)?>
    et voila il m'a afficher l'ensemble des variables utiliser

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    object(sfOutputEscaperIteratorDecorator)[84]
      private 'iterator' => 
        object(IteratorIterator)[93]
      protected 'value' => 
        object(Article)[68]
          protected '_node' => null
          protected '_id' => 
            array
              'id_article' => string '1' (length=1)
          protected '_data' => 
            array
              'id_article' => string '1' (length=1)
              'id_produit_service' => string '16' (length=2)
              'libelle' => string 'Qualité des services de l'ONCF' (length=31)
              'description' => string 'Dans le cadre des services de Kasenn Jawdah, et comme première activité, notre équipe vous proposera ce sondage, qui a pour objectif, de rapporter une évaluation du service de l'ONCF : Train touristique.
     
    Dans le cadre des services de Kasenn Jawdah, et comme première activité, notre équipe vous proposera ce sondage, qui a pour objectif, de rapporter une évaluation du service de l'ONCF : Train touristique.
     
    Dans le cadre des services de Kasenn Jawdah, et comme première activité, notre équipe vous '... (length=629)
              'organisation' => string 'Train ONCF' (length=10)
              'web' => string 'http://www.oncf.ma/' (length=19)
              'image' => string 'train.jpg' (length=9)
              'supp' => null
          protected '_values' => 
            array
              empty
          protected '_state' => int 3
          protected '_lastModified' => 
            array
              empty
          protected '_modified' => 
            array
              empty
          protected '_oldValues' => 
            array
              empty
          protected '_errorStack' => null
          protected '_references' => 
            array
              'CreatArticle' => 
                object(Doctrine_Collection)[69]
                  ...
          protected '_pendingDeletes' => 
            array
              empty
          protected '_pendingUnlinks' => 
            array
              empty
          protected '_serializeReferences' => boolean false
          protected '_invokedSaveHooks' => boolean false
          private '_oid' (Doctrine_Record) => int 3
          protected '_table' => 
            object(ArticleTable)[47]
              protected '_data' => 
                array
                  ...
              protected '_identifier' => string 'id_article' (length=10)
              protected '_identifierType' => int 1
              protected '_conn' => 
                object(Doctrine_Connection_Mysql)[15]
                  ...
              protected '_identityMap' => 
                array
                  ...
              protected '_repository' => 
                object(Doctrine_Table_Repository)[50]
                  ...
              protected '_columns' => 
                array
                  ...
              protected '_uniques' => 
                array
                  ...
              protected '_fieldNames' => 
                array
                  ...
              protected '_columnNames' => 
                array
                  ...
              protected 'columnCount' => int 8
              protected 'hasDefaultValues' => null
              protected '_options' => 
                array
                  ...
              protected '_tree' => null
              protected '_parser' => 
                object(Doctrine_Relation_Parser)[48]
                  ...
              protected '_templates' => 
                array
                  ...
              protected '_filters' => 
                array
                  ...
              protected '_generators' => 
                array
                  ...
              protected '_generator' => null
              protected '_invokedMethods' => 
                array
                  ...
              protected 'record' => 
                object(Article)[49]
                  ...
              protected 'attributes' => 
                array
                  ...
              protected 'parent' => 
                object(Doctrine_Connection_Mysql)[15]
                  ...
              protected '_impl' => 
                array
                  ...
              protected '_params' => 
                array
                  ...
              protected '_locator' => null
              protected '_resources' => 
                array
                  ...
          protected '_locator' => null
          protected '_resources' => 
            array
              empty
      protected 'escapingMethod' => string 'esc_specialchars' (length=16)
     
    object(sfOutputEscaperIteratorDecorator)[95]
      private 'iterator' => 
        object(IteratorIterator)[96]
      protected 'value' => 
        object(Article)[79]
          protected '_node' => null
          protected '_id' => 
            array
              'id_article' => string '2' (length=1)
          protected '_data' => 
            array
              'id_article' => string '2' (length=1)
              'id_produit_service' => string '13' (length=2)
              'libelle' => string 'electrique' (length=10)
              'description' => string 'ssfs' (length=4)
              'organisation' => string 'fdssf' (length=5)
              'web' => string 'erter' (length=5)
              'image' => string 'da7d4f04c84026fdd9d57f835647944078e0d3f3.jpg' (length=44)
              'supp' => null
          protected '_values' => 
            array
              empty
          protected '_state' => int 3
          protected '_lastModified' => 
            array
              empty
          protected '_modified' => 
            array
              empty
          protected '_oldValues' => 
            array
              empty
          protected '_errorStack' => null
          protected '_references' => 
            array
              'CreatArticle' => 
                object(Doctrine_Collection)[80]
                  ...
          protected '_pendingDeletes' => 
            array
              empty
          protected '_pendingUnlinks' => 
            array
              empty
          protected '_serializeReferences' => boolean false
          protected '_invokedSaveHooks' => boolean false
          private '_oid' (Doctrine_Record) => int 6
          protected '_table' => 
            object(ArticleTable)[47]
              protected '_data' => 
                array
                  ...
              protected '_identifier' => string 'id_article' (length=10)
              protected '_identifierType' => int 1
              protected '_conn' => 
                object(Doctrine_Connection_Mysql)[15]
                  ...
              protected '_identityMap' => 
                array
                  ...
              protected '_repository' => 
                object(Doctrine_Table_Repository)[50]
                  ...
              protected '_columns' => 
                array
                  ...
              protected '_uniques' => 
                array
                  ...
              protected '_fieldNames' => 
                array
                  ...
              protected '_columnNames' => 
                array
                  ...
              protected 'columnCount' => int 8
              protected 'hasDefaultValues' => null
              protected '_options' => 
                array
                  ...
              protected '_tree' => null
              protected '_parser' => 
                object(Doctrine_Relation_Parser)[48]
                  ...
              protected '_templates' => 
                array
                  ...
              protected '_filters' => 
                array
                  ...
              protected '_generators' => 
                array
                  ...
              protected '_generator' => null
              protected '_invokedMethods' => 
                array
                  ...
              protected 'record' => 
                object(Article)[49]
                  ...
              protected 'attributes' => 
                array
                  ...
              protected 'parent' => 
                object(Doctrine_Connection_Mysql)[15]
                  ...
              protected '_impl' => 
                array
                  ...
              protected '_params' => 
                array
                  ...
              protected '_locator' => null
              protected '_resources' => 
                array
                  ...
          protected '_locator' => null
          protected '_resources' => 
            array
              empty
      protected 'escapingMethod' => string 'esc_specialchars' (length=16)

  8. #8
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 76
    Par défaut
    essaie d'enlever le 'a.' devant CreatArticle dans ta requête

  9. #9
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Juste pour éclaircir les choses.

    Le code DQL a utiliser dépend du shema.yml qui a permis de créer tes tables.

    Pourrais-tu l'afficher ? Il sera alors plus simple d'écrire la requête correspondante.

    A priori le a.CreatArticle c n'est pas nécessairement une erreur si CreatArticle est le nom de la relation définie dans le shema.yml.

    Mais dans ce cas, le fait de rajouter une condition where qui la reprend est une erreur.

    Donc, impossible de faire sans le shema, et sans avoir vérifier que les problèmes ne sont pas issus du dit shema.yml.

  10. #10
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 16
    Par défaut
    Citation Envoyé par Michel Rotta Voir le message
    Juste pour éclaircir les choses.

    Le code DQL a utiliser dépend du shema.yml qui a permis de créer tes tables.

    Pourrais-tu l'afficher ? Il sera alors plus simple d'écrire la requête correspondante.

    A priori le a.CreatArticle c n'est pas nécessairement une erreur si CreatArticle est le nom de la relation définie dans le shema.yml.

    Mais dans ce cas, le fait de rajouter une condition where qui la reprend est une erreur.

    Donc, impossible de faire sans le shema, et sans avoir vérifier que les problèmes ne sont pas issus du dit shema.yml.

    merci pour votre reponse, j'ai verifié le shema et le nom de la relation est CreatArticle, alors je supprime la condition where ??

  11. #11
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 16
    Par défaut
    merci beaucoup les amis pour votre aides c'est résolu
    j'ai changer le code de l'action.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $this->articles = Doctrine_Query::create()
        ->select('a.*')
        ->addSelect('(SELECT c.date_creat FROM CreatArticle c WHERE a.id_article = c.id_article ) as dateCreat')
        ->from('Article a')
    	->execute();
    et dans la vue indexSuccess j'ai mis le code suivant pour recupérer la valeur date

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    </a> &nbsp;|&nbsp; <span class="date"><?php  echo  $article->dateCreat  ?></span></p>

  12. #12
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Un peu tordu et peut-être un peu lourd, même si je ne doute pas que cela fonctionne.

    Si ta relation est tel que tu me la donne et est correctement définie (pas vérifiable, tu ne donnes pas le schéma), alors tu pourrais aussi écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $this->articles = Doctrine_Query::create()
              ->select('a.*, c.date_creat')
              ->from('Article a, a.CreatArticle c')
              ->leftJoin('a.CreatArticle c')
              ->where('c.date_creat > ?', date('Y-m-d H:i:s', time() - 86400 * 30));
             ->execute();
    A priori, la condition de date supérieur semble avoir disparu de ta requête définitive.

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

Discussions similaires

  1. Jointure sous Interbase
    Par sitaleb dans le forum Bases de données
    Réponses: 4
    Dernier message: 22/02/2008, 18h16
  2. Jointure sous MySQL
    Par zebiloute dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/11/2007, 18h49
  3. requete et jointure sous access
    Par sapic dans le forum Access
    Réponses: 4
    Dernier message: 03/04/2006, 12h21
  4. requete de jointure sous delphi
    Par kaouther dans le forum Bases de données
    Réponses: 1
    Dernier message: 29/12/2005, 11h22
  5. Encore une jointure sous Oracle pour la route
    Par ebaynaud dans le forum Langage SQL
    Réponses: 15
    Dernier message: 04/11/2004, 11h40

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