IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

utilisation d'une fonction "maison" avec querybuilder


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2006
    Messages : 45
    Points : 46
    Points
    46
    Par défaut utilisation d'une fonction "maison" avec querybuilder
    Bonjour,

    J'ai créé une fonction "distance(x1,y1,x2,y2) dans mySQL et j'aimerais l'utiliser dans une requête construite avec querybuilder. J'ai essayé mais j'obtiens toujours la même erreur : Error: Expected known function, got 'DISTANCE'

    J'ai regardé dans la doc querybuilder, mais je ne vois pas de syntaxe spécifique pour l'utilisation de fonctions persos.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $queryBuilder->select('a');
    $queryBuilder->where(...);
    $queryBuilder->andWhere('DISTANCE(:user_lat,:user_lng,a.lat,a.lng)<:distance_max')
    		 ->setParameter('user_lat',$data['user_lat'])
    		 ->setParameter('user_lng',$data['user_lng'])
    		 ->setParameter('distance_max',$data['distance']);
    Quelqu'un aurait-il un conseil, une idée ?
    Merki !

  2. #2
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Points : 677
    Points
    677
    Par défaut
    Bonjour,

    Je pense qu'il va falloir passer par le DQL et ceci

    Je n'ai pas vu de fonction custom dans le querybuilder

  3. #3
    Membre du Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2006
    Messages : 45
    Points : 46
    Points
    46
    Par défaut
    Merci pour ta réponse. Effectivement, je n'ai rien trouvé d'autre... Et franchement, pas envie de me lancer là dedans
    J'ai trouvé une solution de contournement, qui m'évite de faire appel à cette fonction...

  4. #4
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Points : 677
    Points
    677
    Par défaut
    pour les symfoniens, peux tu poster ta soluce ça pourra toujours aider

  5. #5
    Membre expérimenté Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Points : 1 310
    Points
    1 310
    Par défaut
    Hello,

    Juste pour partager ma méthode, pour toutes les requêtes un peu plus poussées que du simple CRUD, qu'il n'est pas possible de faire grâce au DQL, j'ai tendance à garder la requête native, quelle qu'en soit sa complexité, et de mapper le résultat sous forme d'objet grâce au ResultSetMappingBuilder de Doctrine.

    C'est une gymnastique un peu particulière au début mais ça reste très puissant. Cela permet non seulement de ne pas se torturer la tête à essayer de basculer une requête SQL compliquée en DQL (dès lors que l'on fait appel à des méthodes spécifiques au SGBD, ce n'est plus la peine de compter dessus), mais on obtient toujours au final un graphe d'objets manipulable de la même manière.

    La documentation se trouve ici http://docs.doctrine-project.org/en/...mappingbuilder

    ++

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 66
    Points : 82
    Points
    82
    Par défaut
    Voici un article qui commence à dater mais qui je l'espère t'aidera:
    http://www.lexik.fr/blog/symfony/doc...doctrine2-1624

Discussions similaires

  1. [XL-2003] Problème avec utilisation d'une fonction dans les formules
    Par damsmut dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/05/2009, 10h43
  2. problème avec l'utilisation d'une fonction
    Par mcspawn dans le forum Langage
    Réponses: 6
    Dernier message: 06/06/2007, 15h39
  3. [WD9] Utiliser une fonction d'un ActiveX avec pointeur
    Par archimor dans le forum WinDev
    Réponses: 3
    Dernier message: 21/03/2006, 00h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo