Bonjour à tous,
Je rencontre actuellement un soucis avec une requête DQL.
Je cherche à afficher les pôles auxquels un membre appartient, mais pour une raison que j'ignore, une seule ligne s'affiche sur ma page.
Tout d'abord, voici le script SQL de création des 2 tables :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| CREATE TABLE IF NOT EXISTS `membres_poles_postes` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`membres` int(11) DEFAULT NULL,
`poles` int(11) DEFAULT NULL,
`poste` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `FK_MEMBRES_POLES_1` (`membres`),
KEY `FK_MEMBRES_POLES_2` (`poles`),
KEY `FK_MEMBRES_POLES_3` (`poste`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
CREATE TABLE IF NOT EXISTS `poles` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nom` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ; |
Voici maintenant la requête DQL que j'effectue :
1 2 3 4 5 6
| <?
$polespostes = Doctrine_Query::create()
->select('p.nom AS nomPole')
->from('Poles p')
->innerJoin('p.MembresPolesPostes m WITH m.membres = ?', $this->getUser()->getAttribute('id'))
->execute(); |
La requête SQL générée d'après le fichier de log est la suivante :
SELECT p.nom AS p__0 FROM poles p INNER JOIN membres_poles_postes m ON p.id = m.poles AND (m.membres = 1)
Ce qui me donne comme résultat dans MYSQL :
p__0
Technique
Espoir
Or, sur ma page web, seul "Technique" s'affiche.
Pour exploiter mon résultat, j'utilise une boucle foreach().
Je ne pense pas exploiter de manière incorrecte mon résultat car sur une requête plus simple, tout s'affiche, par exemple avec cette requête DQL :
1 2 3 4 5
| <?php
$polespostes = Doctrine_Query::create()
->select('p.nom AS nomPole')
->from('Poles p')
->execute(); |
La requête SQL générée est :
SELECT p.nom AS p__0 FROM poles p
Ce qui me donne les résultats suivant dans MySQL :
p__0
Séniors
Juniors
Espoir
Technique
Pédagogie
Communication
Bureau
et je retrouve bien tous ces résultats sur ma page internet.
Ce que je trouve vraiment étrange, c'est que lorsque je place un compteur dans ma boucle foreach() exploitant les résultats avec un compteur, celui-ci n'est pas incrémenté, comme si la première requête me renvoyait uniquement une ligne, hors, l'exécution dans MySQL montre le contraire.
Si quelqu'un arrive à voir l'origine du problème, je suis preneur !
Merci d'avance pour votre aide !
Wapiti89
Partager