2010-11-11 5 views
2

Je veux faire une requête quelque peu complexe dans la doctrine, à savoir une jointure interne avec une sous-requête avec un group_concat.Comment faire une sous-requête en doctrine et obtenir le résultat hydraté à un objet?

Voir la requête en SQL:

SELECT * 
FROM kinderen k 
INNER JOIN 
(
    SELECT i.kindid, GROUP_CONCAT(DISTINCT a.periode) as periodes 
    FROM inschrijvingen i 
    INNER JOIN activiteiten a ON i.activiteitid=a.id 
    GROUP BY i.kindid 
) p 
ON k.kindid=p.kindid; 

1) Comment puis-je faire dans la doctrine? En d'autres termes, comment puis-je traduire ce sql régulier en dql?

2) Je voudrais que la propriété supplémentaire (periodes) soit accessible dans l'objet Kinderen résultant. Je soupçonne que c'est un comportement par défaut pour la doctrine?

Je ne trouve pas la solution lorsque je lis les docs et google.

Merci!

Répondre

0

Semble que cette option est disponible dans Doctrine 2 en tant que "fetch join", mais elle ne sait pas si elle existe pour 1.2.

http://www.doctrine-project.org/projects/orm/2.0/docs/reference/dql-doctrine-query-language/en

+0

http://stackoverflow.com/questions/3324101/doctrine-regular-vs-fetch-join régulier vs chercher semble seulement être une question de performance. Ma question principale est comment traduire le sql normal en dql, je mettrai à jour ma question. Merci. – chrizzler

+0

Je vois ... J'ai été ébloui par le peu d'hydratation. Est-ce que ça doit être DQL? Voir ma réponse ici: http://stackoverflow.com/questions/2774947/using-raw-sql-with-doctrine/2777020 ... pas sûr de ce que les méthodes d'exécution offrent pour hydrater tout. Lorsque j'ai besoin de contourner occasionnellement DQL, je toujours aller pour les données de tableau. – Tom

+0

Merci pour le lien. Mais ... j'ai plusieurs fonctions de traitement du résultat et celles-ci attendent un objet. Bien sûr, je peux les réécrire, mais ce serait bien de le garder orienté objet. J'utilise Zend + Doctrine. – chrizzler

Questions connexes