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
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
        $q = $this->createQuery('n')
            ->select('n.*, COUNT(DISTINCT s.id) as commentcount')
            ->leftJoin('n.NawakStates s')
            ->groupBy('n.id');