Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > ORM > Doctrine
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 05/10/2011, 17h45   #1
Rédacteur
 
Inscription : janvier 2004
Messages : 2 123
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : janvier 2004
Messages : 2 123
Points : 1 977
Points : 1 977
Par défaut [Doctrine][Symfony1.4] Requêtes imbriquées

Bonjour

Pour les besoins d'une fonctionnalité de mon site, je souhaiterais obtenir une grille recensant tous les Nawak ainsi que pour chacun d'entre eux, le nombre de nawakState s'y rapportant et le user_id du dernier nawakState s'y rapportant.

La description des tables
Citation:
Nawak
-------------
id (pk)
title
comment


NawakState
-------------
id (pk)
nawak_id (fk vers Nawak.id)
user_id
message
created_at
# relations:
# Nawak:
# foreignAlias: NawakStates
Supposons que le contenu des tables soit le suivant :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Nawak :
ID	TITLE		COMMENT  
------------------------------------------------------------------------
1	MonTitre	Ceci est un commentaire  
2	AutreTitre	AutreCommentaire  
 
NawakState  
ID	NAWAK_ID	USER_ID		MESSAGE				CREATED_AT
------------------------------------------------------------------------
1	1		1		Orthographe+remarque		01/10/2011  
2	1		3		Prise en compte remarque	03/10/2011  
3	2		1		Validation			03/10/2011  
4	1		2		Validation			04/10/2011
Objectif : obtenir le résultat suivant via Doctrine :
Code :
1
2
3
4
 
Nawak.Title	COUNT(NawakState)	NawakState.User_id(celui du 04/10/2011)  
soit par exemple :  
MonTitre	3			2
Concernant la requête, j'imagine qu'en SQL, elle correspondrait à celle-ci :
Code sql :
1
2
3
4
5
6
SELECT
n.*, COUNT(DISTINCT s.id) AS commentcount, u.user_id
FROM Nawak n
LEFT JOIN NawakState s ON s.nawak_id = n.id
LEFT JOIN (SELECT user_id, nawak_id FROM NawakState ORDER BY created_at DESC) u ON u.nawak_id = n.id
GROUP BY n.id

Je cherche donc à formaliser cela pour Doctrine mais sans grand résultat.
Je n'ai malheureusement trouvé aucune solution à ce problème. Je suis donc preneur de toute aide sur le sujet.

Merci d'avance,



EDIT : ma requête Doctrine sans le user_id si cela peut aider :
Code PHP :
1
2
3
4
        $q = $this->createQuery('n')
            ->select('n.*, COUNT(DISTINCT s.id) as commentcount')
            ->leftJoin('n.NawakStates s')
            ->groupBy('n.id');
__________________
Ancien pseudo : yobenzen

Recherche un emploi de Chef de Projet ou Développeur en Normandie
Delphi/Oracle/Interbase
Migration vers symfony

CV :
- LinkedIn
- Viadeo
Benjamin GAGNEUX est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h17.


 
 
 
 
Partenaires

Hébergement Web