Bonjour a tous,

J'ai un soucis sur Symfony2, plus précisément sur une requête a réaliser et je souhaiterai le faire avec le QueryBuilder. Pour faire simple j'ai une relation ManyToMany entre un Objet "Article" et un autre "Tag". Cette relation est déclarée dans "Article".

Ce que je souhaite:

Je veux faire une requête qui me donnera en retour un tableau ou un objet ou chaque ligne contient l'id et le titre du tag ainsi que le nombres d'articles dans lequel ce tag est utilisé, ceci pour chaque tag. En SQL ca donnerai exactement ceci: (en considérant la table article pour l'objet article / la table tag pour l'objet tag et la table article_tag qui établit la relation au niveau SQL.

Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
SELECT 
	t.id,
	t.titre,
	COUNT(t.id) AS nbTags
FROM
	tag AS t,
	article_tag AS r
WHERE 
	t.id = r.tag_id
GROUP BY t.id 
ORDER BY nbTags DESC

Je ne suis vraiment pas à l'aise avec le QueryBuilder et n'arrive pas du tout a effectuer la requête, j'ai vaguement tenté (depuis le repository de mon objet Tag comme suit (mais c'est vraiment perdu la -_-) et même en cherchant sur le web je n'arrive pas a comprendre comment adapter les solutions fournies a certains problème vers le mien.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
class TagRepository extends EntityRepository
{
	public function getTagsByPriority(){
		$req = $this->getEntityManager()->createQueryBuilder('t')
				   ->join('CodeyourwebArticleBundle:Article','a')
				   ->addSelect('COUNT(t) AS nbTags')
				   ->groupBy('t.id')
				   ->orderBy('nbTags', 'DESC');
 
		return $req->getQuery()->getResult();
	}
}
Merci d'avance de me montrer comment on fait pour retourner un tableau avec l'id et le titre de chaque tag ainsi que le nombres d'articles dans lequel il est utilisé.