Doctrine - sous-requête à partir de
J'ai une requête à MySQL:
SELECT * FROM (
SELECT COUNT(*) AS count, t.name AS name
FROM tag t
INNER JOIN video_has_tag v USING (idTag)
GROUP BY v.idTag
ORDER BY count DESC
LIMIT 10
) as tags ORDER BY name
et je veux écrire cette doctrine. Comment je peux faire? J'ai écrit:
Doctrine_Query::create()
->select('COUNT(t.idtag) as count, t.name')
->from('Tag t')
->innerJoin('t.VideoHasTag v')
->groupBy('v.idTag')
->orderBy('count DESC, t.name')
->limit(30)
->execute();
Mais je ne peux pas le mettre en "de" trier par nom.
source d'informationauteur snapshot
Vous devez vous connecter pour publier un commentaire.
C'est une réponse:
- Je utiliser Doctrine 1.2 et Symfony 1.4 et
Doctrine_RawSql
travaille avec des sous-requêtes. Vous pouvez ensuiteaddComponent
pour les modèles.Quelque chose vaut de mentionner, c'est que vous ne pouvez pas utiliser directement
Doctrine_Query
objets que les sous-requêtes MAIS vous pouvez facilement obtenir le SQL via le formulairegetSqlQuery()
méthode ou mêmegetSqlQueryPart
et utiliser le résultat pour la sous-requête.getSqlQueryPart
est utile dans la reconstruction de certaines parties d'une requête.Doctrine ne peut pas faire une sous-requête dans la clause from (ni peut-il ADHÉRER à une sous-requête). Votre Doctrine actuelle de la requête va trier par le comte puis par nom. N'est-ce pas ce que vous êtes désireux?
Doctrine va vous permettre de mettre une sous-requête dans la clause from. Toutefois, il ne peut prendre DQL déclarations de texte dans la sous-requête, vous ne pouvez pas utiliser un autre objet de requête. Si vous réécrivez votre DQL sous-requête dans une forme textuelle, vous devriez être en mesure de l'utiliser.
Voir sur cette page de la documentation pour un exemple. L'exemple met le DQL sous-requête dans la clause where, mais il mentionne que vous pouvez utiliser des sous-requêtes dans la clause from.