Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Symfony 4] Récupération données doctrine en JSON

Sujet résolu
    20 mars 2019 à 15:06:27

    Bonjour à tous,

    Merci d'avance pour votre aide. Je réalise une application sous Symfony 4, et j'ai besoin d'intégrer des types JSON dans mes entités. Cela se traduit par longtext dans phpmyadmin.

    J'arrive à récupérer mes données, mais doctrine n'arrive pas à convertir mes données en JSON. J'obtiens cette erreur :

    Uncaught PHP Exception Doctrine\DBAL\Types\ConversionException: "Could not convert database value "{'value':{'type':'text'}}" to Doctrine Type json" at C:\wamp64\www\graa\vendor\doctrine\dbal\lib\Doctrine\DBAL\Types\ConversionException.php line 33

    Voici mon entité :

    <?php
    
    namespace App\Entity;
    
    use Doctrine\ORM\Mapping as ORM;
    
    /**
     * @ORM\Entity(repositoryClass="App\Repository\TachesRepository")
     */
    class Taches
    {
        /**
         * @ORM\Id()
         * @ORM\GeneratedValue()
         * @ORM\Column(type="integer")
         */
        private $id;
        
        /**
         * @ORM\Column(type="json")
         */
        private $IDTypeChampFormulaire = [];
        
        /**
         * @ORM\ManyToOne(targetEntity="Categories",cascade={"persist"})
         * @ORM\JoinColumn(nullable=true)
         */
        private $IDCategories;
    
        /**
         * @ORM\Column(type="string", length=255)
         */
        private $NomTache;
    
        /**
         * @ORM\Column(type="json")
         */
        private $LabelFormTache = [];
    
        /**
         * @ORM\Column(type="integer", nullable=true)
         */
        private $IdTache;
        
    
        public function getId(): ?int
        {
            return $this->id;
        }
        
        public function setId($id): self
        {
            $this->id = $id;
            return $this;
        }
        
        public function getIDTypeChampFormulaire(): ?array
        {
            return $this->IDTypeChampFormulaire;
        }
    
        public function setIDTypeChampFormulaire(array $IDTypeChampFormulaire): self
        {
            $this->IDTypeChampFormulaire = $IDTypeChampFormulaire;
    
            return $this;
        }
    
        public function getIDCategories(): ?\App\Entity\Categories
        {
            return $this->IDCategories;
        }
    
        public function setIDCategories(\App\Entity\Categories $IDCategories): self
        {
            $this->IDCategories = $IDCategories;
    
            return $this;
        }
    
        public function getNomTache(): ?string
        {
            return $this->NomTache;
        }
    
        public function setNomTache(string $NomTache): self
        {
            $this->NomTache = $NomTache;
    
            return $this;
        }
    
        public function getLabelFormTache(): ?array
        {
            return $this->LabelFormTache;
        }
    
        public function setLabelFormTache(array $LabelFormTache): self
        {
            $this->LabelFormTache = $LabelFormTache;
    
            return $this;
        }
    
        public function getIdTache(): ?int
        {
            return $this->IdTache;
        }
    
        public function setIdTache(int $IdTache): self
        {
            $this->IdTache = $IdTache;
    
            return $this;
        }
    }
    

    Cela bloque lorsque je fais cet appel :

    $type_champ_form->getIDTypeChampFormulaire()

    et dans ma base de données :

      

    Merci de votre aide.

    Alexandre


    -
    Edité par AlexandreSZKW 20 mars 2019 à 15:10:46

    • Partager sur Facebook
    • Partager sur Twitter
      22 mars 2019 à 8:30:52

      Salut !

      Ce n'est pas du JSON dans ta base de données, parce que le JSON utilise les guillemets doubles uniquement pour encadrer les index et les chaînes de caractères. Je suppose que tu as généré ces valeurs à la main ?

      • Partager sur Facebook
      • Partager sur Twitter
        22 mars 2019 à 9:21:42

        Salut merci de ta réponse, oui 'ai généré à la main. j'ai résolu mon problème.

        Mais j'aimerais avoir si on peut faire ça en twig :

        concaténéer ne variable js en passant par twig :

                                $container.append('<div id=optionSelectCollectionType'+(i+1)+' data-prototype="{{ form_widget(formOption.i+1.OptionsSelectTacheCollectionType.vars.prototype) | e }}"></div>');
        

        où i est ma variable d'un for et formOptions c'est un tableau

        • Partager sur Facebook
        • Partager sur Twitter
          22 mars 2019 à 10:07:28

          J'ose espérer que depuis tu as testé…

          Sinon oui, c'est possible.

          • Partager sur Facebook
          • Partager sur Twitter
            22 mars 2019 à 10:09:34

            J'ai une erreur : Uncaught PHP Exception Twig\Error\SyntaxError: "Expected name or number."

            Comment faire ? J'ai regardé sur internet, mais pas beaucoup de solution. J'ai essayé la concaténation, fermer les accolades,... toutes les solutions : meme d'intialiser une variable twig et l'utiliser dans le js en l'appelant {% set inder = index+1 %}


            j'ai trouvé la solution : il fallait mettre entre crocher [index].


            Merci encorede l'aide

            -
            Edité par AlexandreSZKW 22 mars 2019 à 10:20:43

            • Partager sur Facebook
            • Partager sur Twitter

            [Symfony 4] Récupération données doctrine en JSON

            × 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