Bonjour,

J'ai un form qui comporte uniquement un champ Address, en résumé, le site géolocalise grâce a cette adresse et affiche les items mais sans tri de distance !

Voici ma requete dans mon repo :

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
 
    /**
     * @return Query
     */
    public function findAllVisibleQuery(AdSearch $search): Query
    {
        $query = $this->findVisibleQuery();
 
        if ($search->getLat() && $search->getLng() && $search->getDistance()) {
            $query = $query
                ->select('a')
                ->andWhere('(6353 * 2 * ASIN(SQRT( POWER(SIN((a.lat - :lat) *  pi()/180 / 2), 2) +COS(a.lat * pi()/180) * COS(:lat * pi()/180) * POWER(SIN((a.lng - :lng) * pi()/180 / 2), 2) ))) <= :distance')
                ->setParameter('lng', $search->getLng())
                ->setParameter('lat', $search->getLat())
                ->setParameter('distance', $search->getDistance());
        }
 
    private function findVisibleQuery(): QueryBuilder
    {
        return $this->createQueryBuilder('a')
            ->where('a.publishedAt != false');
    }
La requête fonctionne très bien mais quand je rajoute :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
->orderBy('a.distance', 'ASC')
J'ai le message d'erreur :
[Semantical Error] line 0, col 253 near 'distance ASC': Error: Class App\Entity\Ad has no field or association named distance
Alors, j'ai bien compris le message il ne trouve pas de champ ou d'association nommée distance ok mais comment faire pour avoir un tri de la distance la plus petite a la distance la plus grande.

je vous remercie les amis