Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/09/2011, 14h51   #1
Invité de passage
 
Inscription : mai 2009
Messages : 14
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 14
Points : 2
Points : 2
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 :
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 :
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
goood est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 11h57   #2
Membre régulier
 
Homme Jordane
Étudiant
Inscription : février 2010
Messages : 59
Détails du profil
Informations personnelles :
Nom : Homme Jordane
Âge : 23
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2010
Messages : 59
Points : 81
Points : 81
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 :
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
Joauc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 13h04   #3
Invité de passage
 
Inscription : mai 2009
Messages : 14
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 14
Points : 2
Points : 2
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 :
<?php echo $article->CreatArticle()->getDateCreat()  ?>
j'ai changé cette mathode avec un autre qui est dessous

Code :
<?php echo $article['CreatArticle']['date_creat']  ?>

mais il m"aaffiche cette erreur :


Code :
No description for object of class "CreatArticle"
goood est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 13h41   #4
Membre régulier
 
Homme Jordane
Étudiant
Inscription : février 2010
Messages : 59
Détails du profil
Informations personnelles :
Nom : Homme Jordane
Âge : 23
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2010
Messages : 59
Points : 81
Points : 81
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 :
<?php echo $article->CreatArticle()->getDateCreat()  ?>
j'ai changé cette mathode avec un autre qui est dessous

Code :
<?php echo $article['CreatArticle']['date_creat']  ?>

mais il m"aaffiche cette erreur :


Code :
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 :
<?php echo $article->CreatArticle->getDateCreat()  ?>
( il ne faut pas de paranthèse apres CreatArticle)
Joauc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 16h11   #5
Invité de passage
 
Inscription : mai 2009
Messages : 14
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 14
Points : 2
Points : 2
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 :
<?php echo $article->CreatArticle->getDateCreat()  ?>
( il ne faut pas de paranthèse apres CreatArticle)


merci , mais apres que que j'ai essayé
Code :
<?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é
goood est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 16h22   #6
Membre régulier
 
Homme Jordane
Étudiant
Inscription : février 2010
Messages : 59
Détails du profil
Informations personnelles :
Nom : Homme Jordane
Âge : 23
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2010
Messages : 59
Points : 81
Points : 81
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 :
1
2
 
<?php var_dump($article)?>
?
Joauc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 16h38   #7
Invité de passage
 
Inscription : mai 2009
Messages : 14
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 14
Points : 2
Points : 2
j'ai integré l'instruction

Code :
<?php var_dump($article)?>
et voila il m'a afficher l'ensemble des variables utiliser

Code :
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)
goood est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 10h45   #8
Membre régulier
 
Homme Jordane
Étudiant
Inscription : février 2010
Messages : 59
Détails du profil
Informations personnelles :
Nom : Homme Jordane
Âge : 23
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2010
Messages : 59
Points : 81
Points : 81
essaie d'enlever le 'a.' devant CreatArticle dans ta requête
Joauc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2011, 22h56   #9
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
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.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2011, 15h23   #10
Invité de passage
 
Inscription : mai 2009
Messages : 14
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 14
Points : 2
Points : 2
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 ??
goood est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 13h45   #11
Invité de passage
 
Inscription : mai 2009
Messages : 14
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 14
Points : 2
Points : 2
merci beaucoup les amis pour votre aides c'est résolu
j'ai changer le code de l'action.php
Code :
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 :
1
2
 
</a> &nbsp;|&nbsp; <span class="date"><?php  echo  $article->dateCreat  ?></span></p>
goood est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2011, 12h57   #12
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
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 :
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.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h00.


 
 
 
 
Partenaires

Hébergement Web