Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Symfony] Session, unserialize ...

Sujet résolu
Anonyme
    27 juillet 2017 à 13:13:24

    Bonjour,

    Je récupère une variable via le système de session :

    $session = new Session();
    $maVoiture = $session->get('voiture');

    Cette entité est en relation avec une autre, garage. Dans mon controller je fais donc :

    $garage->setVoiture($maVoiture);
    $em->persist($garage);
    $em->flush();


    Et la bim ! Erreur !

    J'ai bien compris d'ou ça venait : le fait que mon entity soit detaché (unserializé) et donc je fois utiliser la méthode "Merge" de doctrine.

    SAUF QUE, Merge fonctionne mais n'effectue pas de cascade sur mes entités car si j'ai bien compris, mon entité récupéré n'est plus gérer par l'entitymanager.

    Dès lors comment faire pour pesister une entité récuperé via la session ? Je peux la sérializé ? 

    Je vous avoue être perdu ! Merci d'avance de votre aide.

    • Partager sur Facebook
    • Partager sur Twitter
      27 juillet 2017 à 13:33:13

      Salut,

      Q1: si tu fais new Session() normalement elle est vide, donc $maVoiture vaut null (ou vide) non ?

      Quel est l'erreur affichée.

      ++

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        27 juillet 2017 à 13:46:53

        christouphe a écrit:

        Salut,

        Q1: si tu fais new Session() normalement elle est vide, donc $maVoiture vaut null (ou vide) non ?

        Quel est l'erreur affichée.

        ++

        Non la variable n'est pas vide et le dump s'effectue correctement. 

        L'erreur est la suivante : 

        Either explicitly call EntityManager#persist() on this unknown entity or configure cascade persist this association in the mapping for example @ManyToOne(..,cascade={"persist"}).
        

        Pourtant les relations sont bonnes. Je suis sur que le problème vient d'entité que je récupère en session.

        https://stackoverflow.com/questions/29973306/symfony2-and-doctrine-em-persist-vs-em-merge

        Je vais te dire, je vais pas me prendre la tête plus longtemps. Je vais passer un id en session plutôt que l'objet directement, puis je récupèrerai l'objet au final. Qu'en pense tu ?

        Merci de ton aide



        • Partager sur Facebook
        • Partager sur Twitter
          27 juillet 2017 à 13:49:30

          C'est un contournement mais il faudra que tu comprennes pourquoi tu as ce problème, peut-être que la classe n'est pas chargée avant la création de la session.

          A voir ;)

          ++

          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            27 juillet 2017 à 13:53:35

            christouphe a écrit:

            C'est un contournement mais il faudra que tu comprennes pourquoi tu as ce problème, peut-être que la classe n'est pas chargée avant la création de la session.

            A voir ;)

            ++


            Effectivement ça reste un "bricolage" ! Je te remercie de ton aide en tout cas, bonne journée à toi.
            • Partager sur Facebook
            • Partager sur Twitter

            [Symfony] Session, unserialize ...

            × 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