title: Symfony2 Doctrine2 Array Collection OneToMany doesn't add item
body: <p>I have problem with the array collection.</p>
  
  <p>If i don't use "$livraison->setChoix($livraison->getChoix());" in form valid, the item is doesn't save in relation.
  And with this, the item in collection as duplicate in any save.</p>
  
  <p>i have 2 entity, "Livraison" and "LivraisonChoix"</p>
  
  <p>Livraison is in relation OneToMany with LivraisonChoix
  LivraisonChoix is in relation ManyToOne with Livraison</p>
  
  <p>this is the Livraison :</p>
  
  <pre><code>...
  use Doctrine\Common\Collections\ArrayCollection;
  use Doctrine\ORM\Mapping as ORM;
  use Symfony\Component\Validator\Constraints as Assert;
  
  class Livraison
  {
  
  ...
  
      /**
       * @ORM\OneToMany(targetEntity="\YOU\CommercantBundle\Entity\LivraisonChoix", mappedBy="livraison", cascade={"all"})
       **/
      private $choix;
  
      public function __construct()
      {
          $this-&gt;choix = new ArrayCollection();
      }
  
  
      public function addChoix(\YOU\CommercantBundle\Entity\LivraisonChoix $choix)
      {
          $choix-&gt;setLivraison($this);
          $this-&gt;choix[] = $choix;
      }
  
      public function setChoix($choix)
      {
          foreach($choix as $choi){
              $this-&gt;addChoix($choi);
          }
      }
  
      public function removeChoix($choix)
      {
          $this-&gt;choix-&gt;removeElement($choix);
      }
  
      public function getChoix()
      {
          return $this-&gt;choix;
      }
  
  ...
  </code></pre>
  
  <p>this is the LivraisonChoix :</p>
  
  <pre><code>use Doctrine\ORM\Mapping as ORM;
  
  class LivraisonChoix
  {
  
  ...
  
      /**
       * @ORM\ManyToOne(targetEntity="YOU\CommercantBundle\Entity\Livraison", inversedBy="choix")
       **/
      private $livraison;
  
  ...
  
  
      public function setLivraison($livraison)
      {
          $this-&gt;livraison = $livraison;
  
          return $this;
      }
  
      public function getLivraison()
      {
          return $this-&gt;livraison;
      }
  
  ...
  </code></pre>
  
  <p>this is the form builder :</p>
  
  <pre><code>public function buildForm(FormBuilderInterface $builder, array $options)
  {
      $builder
          -&gt;add('name')
          -&gt;add('choix','collection',array(
                          'type'=&gt;new LivraisonChoixType(),
                          'allow_add' =&gt; true,
                          'allow_delete' =&gt; true,
          ))
      ;
  }
  </code></pre>
  
  <p>And this is the controller :</p>
  
  <pre><code>        $livraison = new Livraison();
  
          $form = $this-&gt;createForm(new LivraisonType(), $livraison);
  
          $request = $this-&gt;get('request');
          if ($request-&gt;getMethod() == 'POST') {
              $form-&gt;bind($request);
  
              if ($form-&gt;isValid()) {
  
                  $livraison-&gt;setAccount($customer);
                  $livraison-&gt;setChoix($livraison-&gt;getChoix());
                  $em-&gt;persist($livraison);
                  $em-&gt;flush();
  
                  return $this-&gt;redirect($this-&gt;generateUrl('you_commercant_livraison_editer',array('id'=&gt;$livraison-&gt;getId())));
  
              }
          }
  </code></pre>