Salut,
quelles sont les différences entre récupération des données dans controller et récupération dans répository

voilà exemple de récupération des données en repository :

public function findAllWithRegion() {
        return $this->createQueryBuilder('m')
                ->select('m,v,d,r')
                ->join('m.ville','v')
                ->join('v.departement','d')
                ->join('d.region','r')
                ->getQuery()
                ->getResult();
    }

et voilà un exemple de récupération des données en controller:

 $Employee= $em->getRepository('EnsoFrontBundle:Employee')->findOneBy(array('id' => $idEmp));

merci d'avance

2 réponses


Amilti
Réponse acceptée

En règle général c'est pas au controller de s'occuper d'écrire les requêtes, mais bon tu fais comme tu veux :) .
Je dirais que l'avantage d'écrire ça dans un repo ça te permet justement de pouvoir réutiliser cette requête dans un autre controller ou autre ça t'évites de dupliquer ton code .

Pour moi (mais je ne suis pas un pro de symfony) tu ne récupères rien dans le repository, tu crées juste de quoi récupérer dans le controller.

d'ailleurs tu vois bien que dans le controller tu fais un getRepository.

En fait il existe des requêtes "magiques" pour récupérer des enregistrements dans le controller (comme les findOneBy, findBy ou findAll etc...), mais si tu veux une requête un peu plus poussée pour récupérer des enregistrements il te faut la créer dans le repository.

Pour ton exemple, dans le controller il te faudra faire un "getRepository(...)->findAllWithRegion()" pour pouvoir traiter le résultat de la requête.