Géolocalisation ou comment créer ses propres fonctions DQL avec Doctrine2


Samuel Breton
Géolocalisation ou comment créer ses propres...

Pour calculer les distances entre deux points géographiques il faut se baser sur leurs latitudes et longitudes. Lorsque l’on souhaite appliquer ce calcul en SQL on se retrouve avec une requête extrêmement verbeuse. Heureusement si vous utilisez Doctrine2 vous allez pouvoir créer votre propre fonction DQL qui vous permettra de faire ce calcul très simplement.
(suite…)

Show Comments (8)

Comments

  • Christophe

    Excellent ! (+)
    Je vais tester ça rapidement.

    • Article Author
  • Marvin

    Super article ! Vous pourriez cependant expliquer la méthode getSql un peu plus en détail s’il vous plaît ? J’ai du mal à saisir ce passage, et il n’y a pas trop de doc sur le sujet ailleurs…vous en avez trouvée où ?

    Merci et bonne continuation !

    • Article Author
  • yoye

    @marvin je viens de mettre à jour l’article. Concrètement lorsque tu parses ton DQL tu peux extraire plusieurs type d’expression (comparaison, condition, etc …) que tu peux ensuite utiliser pour construire ton SQL.

    • Article Author
  • Marvin

    D’accord, en fait je comprenais pas pourquoi vous utilisiez ComparisonExpression, mais c’était pour récupérer simplement les deux valeurs. Merci ^^

    • Article Author
  • Marvin

    D\’accord, en fait je comprenais pas pourquoi vous utilisiez ComparisonExpression, mais c\’était pour récupérer simplement les deux valeurs. Merci ^^

    • Article Author
  • Alexandre

    Bonjour,

    merci pour ce tutorial. Souhaitant également intégrer un système de localisation sur mon application Symfony, j’ai voulu intégrer votre solution, mais je rencontre une erreur Doctrine que je n’arrive pas à résoudre :
    Invalid parameter number: number of bound variables does not match number of tokens

    Cette erreur arrive plutôt quand il y a plus de données que de valeurs à changer ou vice versa, mais impossible de trouver d’où cela vient.

    Avez-vous une idée ?

    Merci,

    Cordialement,

    Alexandre

    • Article Author
  • MisterMo

    Hello,

    Merci pour ce super exemple qui m’a été bien utile et m’a permis de dormir un peu plus longtemps que prévu la nuit dernière 😉

    Je cherche à modifier l’alias qui est automatiquement généré par SqlWalker – genre sclr4 – pour pouvoir ensuite appliquer une clause SQL HAVING sur cette colonne. Apparemment plus facile à dire qu’à faire… Quelqu’un a-t-il une idée de comment spécifier un alias de colonne ?

    Merci d’avance!
    MisterMo

    • Article Author
  • Gabriel

    Excellent ! Merci pour l\’astuce.

    • Article Author

Recevez nos articles