Partage
  • Partager sur Facebook
  • Partager sur Twitter

Query builder symfony 4

Une liste déroulante via une entité

Sujet résolu
    17 juillet 2019 à 18:03:38

    Bonjour, je suis confronté à une erreur que je n'arrive pas à déchiffrer.

    Je souhaite faire une liste déroulante avec dedans les différents sandwichs déjà en base de donnée. 

    Voici mon code piocher sur la doc symfony :

    ->add('sandwish', EntityType::class, [
    'class' => Menu::class,
    'query_builder' => function (EntityRepository $er) {
    return $er->createQueryBuilder('u')
    ->orderBy('u.sandwish', 'ASC');
    },
    'choice_label' => 'sandwish',
    ]);

    J'ai ceci comme message : 

    Catchable Fatal Error: Object of class Proxies\__CG__\App\Entity\Sandwish could not be converted to string

    J'ai essayer de changer de table avec la table Sandwich concerner mais j'ai ce message :

    [Semantical Error] line 0, col 47 near 'sandwish ASC': Error: Class App\Entity\Sandwich has no field or association named sandwich

    C'est mon premier QueryBuilder, le problème est peut-être tout simple. 

    Merci d'avance.

    -
    Edité par Jeffbzh3 17 juillet 2019 à 18:04:24

    • Partager sur Facebook
    • Partager sur Twitter
      18 juillet 2019 à 12:17:05

      Bonjour, 

      D'après l'erreur retournée, Symfony considère sandwish comme une entité et pas comme une colonne de ta table dont il pourrait afficher la valeur. Tu as bien un attribut Sandwish dans ton entité Menu ? 

      • Partager sur Facebook
      • Partager sur Twitter
        18 juillet 2019 à 14:11:53

        Bonjour,

        Pour la première erreur, il faut que tu rajoutes la méthode __toString() dans ton entité Sandwich et que tu return la valeur que tu veux afficher:

        public function __toString()
        {
            // Le nom du sandwich sera affiché dans la liste 
               déroulante.
            return $this->name;
        }



        • Partager sur Facebook
        • Partager sur Twitter
        "Ils ne savaient pas que c'était impossible, alors ils l'ont fait" Mark Twain
          19 juillet 2019 à 17:43:26

          Merci de votre réponse, j'ai réussi à le faire sans query builder:

          ->add('sandwish',EntityType::class,['class' => Sandwish::class,'choice_label' => 'nom'])

          J'avais oubllier les to string, c'est important ! 

          • Partager sur Facebook
          • Partager sur Twitter

          Query builder symfony 4

          × 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