Symfony - Update sur many to many

, par  admin

Bonjour à tous,

Voici un petit tutoriel pour insérer, supprimer et mettre à jour une entité à partir de son côté inversé.

Prenons 2 entité :
Contact
List ( propriétaire)
association de type many to many

Entité list (propriétaire)

class list {

        /**
         * @ORM\ManyToMany(targetEntity="contact", inversedBy="list")
         *
         */
        private $contact;



   /**
    * Add contact
    *
    * @param \TutodidacteBundle\Entity\contact $contact
    * @return list
    */
   public function addContact(\TutodidacteBundle\Entity\contact $contact)
   {
       $this->contact[] = $contact;

       return $this;
   }

   /**
    * Remove contact
    *
    * @param \TutodidacteBundle\Entity\contact $contact
    */
   public function removeContact(\TutodidacteBundle\Entity\contact $contact)
   {
       $this->contact->removeElement($contact);
   }

Entité contact :

class contact {

        /**
         * @ORM\ManyToMany(targetEntity="list", mappedBy="contact")
         * @ORM\JoinColumn(name="tlist", referencedColumnName="id", nullable=true)
         */
        private $list;

   /**
    *
    * @param \TutodidacteBundle\Entity\list $tlist
    * @return contact
    */
   public function addList(\TutodidacteBundle\Entity\tlist $tlist)
   {
           $list->addContact($this);
       $this->list[] = $list;

       return $this;
   }
   
   /**
    *
    * @param \TutodidacteBundle\Entity\tlist $tlist
    */
   public function removeList(\TutodidacteBundle\Entity\list $list)
   {
       $list->removeContact($this);
           $this->list->removeElement($list);
   }

   /**
    *
    * @return \Doctrine\Common\Collections\Collection
    */
   public function getLlist()
   {
       return $this->llist;
   }

Et enfin notre formulaire (ne pas oublier de passer by_reference à false pour l’update, afin que les setters soient correctement appelés)

->add('list', null,  array('expanded' => true, 'multiple' => true, 'required' => false, 'label' => false, 'by_reference' => false))

Et voilà, il est ainsi possible de mettre à jour l’entité liste à partir de l’entité contact
A+

Un peu de théorie... Tous les cours théoriques