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 :

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
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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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