[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:
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:
1 2 3 4
| $q = $this->createQuery('n')
->select('n.*, COUNT(DISTINCT s.id) as commentcount')
->leftJoin('n.NawakStates s')
->groupBy('n.id'); |