Search code examples
symfonysymfony4query-builderdql

i need convert SQL query to Doctrine Query Builder


I have a relation ManyToMany and the tables in my databases are :

  • article : (id,titre,description,category,createAt)
  • article_groupe_auteur: (article_id,groupe_auteur_id)
  • groupe_auteur : (id,nom,prenom,adress,institution,city)

i need to to retrive the authors relied to an article.

Sql Query

use RevueProject;
 select nom_auteur,prenom_auteur,nom_ins,adresse_ins from groupe_auteur ga
     INNER JOIN
                article_groupe_auteur aga on groupe_auteur.id = aga.groupe_auteur_id
     INNER JOIN article a on aga.article_id = a.id
                where  a.id=21;

Dql Query

 public function SelectArticleAuthors2(int $Id){

  return $this->createQueryBuilder('GA');
              ->innerJoin('article_groupe_auteur','aga', Join::WITH , 'aga = ga.groupe_auteur_id')
              ->innerJoin('article','a',Join::WITH , 'a = aga.article_id')
              ->where('aga.article_id = : Id')
              ->setParameter('Id', $Id);
              ->getQuery()->getResult()
}

Solution

  • Its how i get the authors relied to an specify article by a relation ManyToMany

    class GroupeAuteurRepository extends ServiceEntityRepository
    {
        /**
         * @return mixed
         */
        public function SelectArticleAuthors(int $id)
        {
            // ga (alias) : GroupeAuteur Entity 
            return $this->createQueryBuilder('ga') 
                        // articles (collection)
                        ->innerJoin('ga.articles','a','WITH','a.id=:id') 
                        ->setParameter('id', $id)
                        ->getQuery()->getResult();
        }
    }