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

Doctrine2 PHP Discussion :

Fonction CONCAT et utilisation dans DQL


Sujet :

Doctrine2 PHP

  1. #1
    Membre éclairé Avatar de FadeToBlack
    Homme Profil pro
    ...
    Inscrit en
    Août 2010
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : ...
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2010
    Messages : 320
    Par défaut Fonction CONCAT et utilisation dans DQL
    Salut à tous,

    Je me bats actuellement avec Doctrine pour retrouver les particularités de la fonction concat dans MySql

    En fait dans mon entité, j'ai un attribut "Nom" et un autre "prenom" que je voudrais concatener avec un espace entre les deux hirtoire que cela soit lisible.

    En Sql version MySql je fais

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT CONCAT_WS(' ', nom , prenom) as nom_complet FROM MaTable.....
    Dans mon repository j'ai une méthode concatener qui fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public function concatener(){
     
        $req = _em->createQuery("SELECT CONCAT(m.nom, m.prenom) from MOnBundle:MaTable m")
        $result = $req->getResult();
        return $result;
    }
    Cela fonctionne mais je n'arrive pas à faire en sorte qu'il y ait un espace entre les deux champs récupérés

    Est-ce que vous connaissez la méthode similaire à concat_ws ? Ou sinon un truc alternatif ?

    Merci à tous d'avance.

  2. #2
    Membre Expert
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Par défaut
    En DQL, la fonction CONCAT ne semble accepter que 2 parametres.

    Tu peux donc palier au probleme de cette façon :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT CONCAT(CONCAT(m.nom, ' '), m.prenom) ...

    Dans le cas ou l'un des 2 champs serait nullable. Pour ne pas avoir d'espace en trop tu peux rajouter un TRIM :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT TRIM(CONCAT(CONCAT(m.nom, ' '), m.prenom)) ...

  3. #3
    Membre éclairé Avatar de FadeToBlack
    Homme Profil pro
    ...
    Inscrit en
    Août 2010
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : ...
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2010
    Messages : 320
    Par défaut
    YEEEEESSSSS,

    Evidemment, une concatenation en chaine est une bonne et très simple solution.

    Comme quoi pourquoi de faire compliqué quand on peut faire simple.

    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/03/2011, 11h54
  2. Réponses: 2
    Dernier message: 11/03/2011, 21h17
  3. Utiliser une fonction d'une DLL dans Excel
    Par archonte dans le forum Excel
    Réponses: 5
    Dernier message: 11/05/2007, 23h14
  4. Réponses: 1
    Dernier message: 13/03/2007, 08h34
  5. Réponses: 3
    Dernier message: 14/04/2006, 19h36

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