Bonjour, j'ai un problème avec deux entites que j'ai genéré avec le commandes symfony (v 5). J'ai une entité User qui peux être inscrit dans plusieurs formation, et une formation peut être choisie par plusieurs User. J'ai essayé plusieurs possiblités avec les cascade persiste ou le joinTable mais rien marche.

User.php

    /**
     * @ORM\Column(type="datetime", nullable=true)
     */
    private $fechaQPago;

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

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

    /**
     * @ORM\ManyToMany(targetEntity=Formacion::class, mappedBy="alumnosInscritos")
     */
    private $formacionesInscritas;

    public function __construct()
    {
        $this->created_at = new \DateTime();
        $this->formacionesInscritas = new ArrayCollection();
    }

        /**
     * @return Collection<int, Formacion>
     */
    public function getFormacionesInscritas(): Collection
    {
        return $this->formacionesInscritas;
    }

    public function addFormacionesInscrita(Formacion $formacionesInscrita): self
    {
        if (!$this->formacionesInscritas->contains($formacionesInscrita)) {
            $this->formacionesInscritas[] = $formacionesInscrita;
            $formacionesInscrita->addAlumnosInscrito($this);
        }

        return $this;
    }

    public function removeFormacionesInscrita(Formacion $formacionesInscrita): self
    {
        if ($this->formacionesInscritas->removeElement($formacionesInscrita)) {
            $formacionesInscrita->removeAlumnosInscrito($this);
        }

        return $this;
    }
Formation.php

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

    /**
     * @ORM\Column(type="string")
     */
    private $horario;

    /**
     * @ORM\ManyToMany(targetEntity=User::class, inversedBy="formacionesInscritas")
     */
    private $alumnosInscritos;

    public function __construct()
    {
        $this->alumnosInscritos = new ArrayCollection();
    }

    /**
     * @return Collection<int, User>
     */
    public function getAlumnosInscritos(): Collection
    {
        return $this->alumnosInscritos;
    }

    public function addAlumnosInscrito(User $alumnosInscrito): self
    {
        if (!$this->alumnosInscritos->contains($alumnosInscrito)) {
            $this->alumnosInscritos[] = $alumnosInscrito;
        }

        return $this;
    }

    public function removeAlumnosInscrito(User $alumnosInscrito): self
    {
        $this->alumnosInscritos->removeElement($alumnosInscrito);

        return $this;
    }

Ce que je veux

Quelqu'un a rencotré ce problème et il/elle a trouvé la solution?

Ce que j'obtiens

Décrivez vos éventuelles erreurs ou ce que vous obtenez à la place de ce que vous attendez :(

6 réponses


du coup c'est pas many to many

Bonsoir Thomas,
Le update marche dans le sens de formations quand j'ajoute des users mais pas dans l'autre sens. C'est du à quoi à votre avis?

Merci d'avance

tu as un shema de bdd ?
tu peut me l'envoyer sur discord pour que je puisse regarder la juste avec du code c'est un peut chaud ^^
si tu as fait un table intermedaire c'est many to many
si tu as que deux table dans un seul sans c'est many to one
https://zestedesavoir.com/tutoriels/1713/doctrine-2-a-lassaut-de-lorm-phare-de-php/les-relations-avec-doctrine-2/relation-manytoone-et-onetomany-1-n/
ce tuto peut peut etre t'aider

C'est quoi votre identifiant sur discord svp?

thomas56#0903

j'ai vous ai pas trouvé au debut https://discord.gg/YufhJNAb
je viens de vous ai envoyé une invitation.