Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Symfony 2.6] Query builder

Requête restreinte dans un form

    18 janvier 2017 à 14:07:57

    Bonjour.

    Je souhaite faire une requête distinct sur seulement un champ de ma bdd afin de ne pas avoir plusieurs fois le même prénom dans une liste déroulante par exemple.

    Actuellement j'ai ça : 

     ->add('firstName', 'entity', array(
    			'label' => 'Prénom : ',
    			'class' => 'OCPortailBundle:User',
    			'query_builder' => function(\Doctrine\ORM\EntityRepository $er) {
    			return $er->createQueryBuilder('u')
    			->where('u.endDate is null')
    			->orderBy('u.firstName')
    			->distinct();},
    			'property' => 'firstName'))

    Mais query builder prend tous les champs de l'entity du coup le distinct ne marche pas :/

    Si quelqu'un pouvait m'expliquer comment faire ^^ 

    • Partager sur Facebook
    • Partager sur Twitter
    Actuellement alternant BAC+3 au sein d'une école d'ingénierie informatique. Road to BAC + 5 !
      18 janvier 2017 à 16:20:09

      salut,

      essaye 

      distinct(firstName);

      puis il te manque pas un getQuery() ?

      http://docs.doctrine-project.org/projects/doctrine-mongodb-odm/en/latest/reference/query-builder-api.html

      -
      Edité par nansnans 18 janvier 2017 à 16:20:41

      • Partager sur Facebook
      • Partager sur Twitter
        18 janvier 2017 à 16:27:20

        Ce n'est malheureusement pas la solution. Pour le getQuery je n'en ai pas besoin. Le orderBy marche très bien par exemple.

        Mon seul soucis c'est le createQueryBuilder('x') qui prend tous les champs. 

        Je ne sais pas comment faire pour lui dire de sélectionner seulement le champ firstName de l'entity.

        • Partager sur Facebook
        • Partager sur Twitter
        Actuellement alternant BAC+3 au sein d'une école d'ingénierie informatique. Road to BAC + 5 !
          18 janvier 2017 à 17:28:20

          Je ferais :

          ->add('firstName', 'entity', array(
                     'label' => 'Prénom : ',
                     'class' => 'OCPortailBundle:User',
                     'query_builder' => function(\Doctrine\ORM\EntityRepository $er) {
                     return $er->createQueryBuilder('u')
                     ->distinct(firstName);
                     ->andWhere('u.endDate is null')
                     ->orderBy('u.firstName')
                     },
                     'property' => 'firstName'))



          • Partager sur Facebook
          • Partager sur Twitter
            24 janvier 2017 à 16:37:21

            Je repasse sur mon projet demain. 

            J'ai testé rapidement cette solution nansnans mais elle ne fonctionne pas non plus :/

            • Partager sur Facebook
            • Partager sur Twitter
            Actuellement alternant BAC+3 au sein d'une école d'ingénierie informatique. Road to BAC + 5 !

            [Symfony 2.6] Query builder

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown