Bonjour à tous,

Ce que je fais

Je débute avec Symfony, je suis la version 4.4.7 et en suivant la documentation officielle, j'ai créé mes entités puis j'ai voulu générer un CRUD pour que tout soit fait automatiquement. Ici pas de problème, tout a bien fonctionné.

Je peux créer un nouvel enregistrement, je retrouve même mes autres entitées grâce aux relations ManyToMany que j'ai mis en place par contre quand j'enregistre, ça me sauvegarde bien les données de l'entité sur laquelle je suis mais pas les relations.

Après quelques recherches, j'ai ajouté un "cascade={"persist"}" à mon entité mais ça ne fonctionne pas mieux.

Voici le code de mon entité principale (je vous passe volontairement toutes les fonctions qui sont celles de base) :

class Destination
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=30)
     */
    private $destination_code;

    /**
     * @ORM\Column(type="string", length=255)
     */
    private $name;

    /**
     * @ORM\Column(type="boolean")
     */
    private $has_free_date;

    /**
     * @ORM\Column(type="datetime")
     */
    private $created_at;

    /**
     * @ORM\Column(type="datetime")
     */
    private $updated_at;

    /**
     * @ORM\ManyToMany(targetEntity="App\Entity\Accomodation", mappedBy="destinations", cascade={"persist", "remove"})
     */
    private $accomodations;

    /**
     * @ORM\ManyToMany(targetEntity="App\Entity\SchoolOption", mappedBy="destinations", cascade={"persist", "remove"})
     */
    private $schoolOptions;

    /**
     * @ORM\OneToMany(targetEntity="App\Entity\Travel", mappedBy="destination", cascade={"persist", "remove"})
     */
    private $travels;
}

J'ai une relation ManyToMany avec une entité Accomodation qui ressemble à ceci :

class Accomodation
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=255)
     */
    private $name;

    /**
     * @ORM\Column(type="boolean")
     */
    private $has_roommate;

    /**
     * @ORM\Column(type="datetime")
     */
    private $created_at;

    /**
     * @ORM\Column(type="datetime")
     */
    private $updated_at;

    /**
     * @ORM\ManyToMany(targetEntity="App\Entity\Destination", inversedBy="accomodations")
     */
    private $destinations;
}

Quand j'ouvre mon formulaire d'ajout de destination, je retrouve bien ma liste d'accomodation parmi laquelle je peux en sélectionner une ou plusieurs. Mais quand j'enregistre ce n'est pas pris en compte.

J'ai du oublier quelque chose j'imagine mais je ne vois pas. Si quelqu'un pouvait m'aider je suis preneur :)

Merci d'avance

Aucune réponse