Bonjour,
Dans mon repository, dans la fonction "findByProximityQuery', je renvoie les annonces (chacune liée à un véhicule lui-même lié à une adresse) triées par ordre croissant de distance par rapport à une latitude et une longitude données. En plus des annonces, je renvoie également la distance elle-même afin de pouvoir l'afficher.
Mon problème, c'est que comme j'ajoute la distance dans mon select, le résultat de la requête n'est plus une collection d'annonces.
Voici la partie du code de ma fonction dans laquelle j'ajoute la distance à mon select :
Or, dans la suite de mon traitement, j'affiche les différentes annonces en utilisant des propriétés et des méthodes de l'entité "Advert". Cependant, à cause du addSelect($sqlDistance), ce n'est plus une collection d'annonces qui m'est retournée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 ... $query = $this->createQueryBuilder('a') ->distinct(true) ->join('a.vehicle', 'v') ; if ($search->getLatitude() && $search->getLongitude()) { $sqlDistance = '(6353 * 2 * ASIN(SQRT( POWER(SIN((s.latitude - :latitude) * pi()/180 / 2), 2) +COS(s.latitude * pi()/180) * COS(:latitude * pi()/180)' . ' * POWER(SIN((s.longitude - :longitude) * pi()/180 / 2), 2) ))) as distance'; $query ->addSelect($sqlDistance) ->join('v.situation', 's') //Ici, c'est l'adresse qui contient la latitude et la longitude ->orderBy('distance', 'ASC') ->setParameter('longitude', $search->getLongitude()) ->setParameter('latitude', $search->getLatitude()) ; ... return $query->getQuery(); ...
Dès lors, je ne sais pas comment soit modifier ma requête, soit comment traiter le résultat de ceci pour travailler avec des objets de type "Advert".
Quelqu'un aurait une idée?
Merci d'avance pour votre aide.
Partager