Symfony2-Doctrine: ManyToMany relation non è salvato nel database

Ho due classi di modelli PHP denominate Category e Item. Una categoria può avere molti articoli e un object può appartenere a molte categorie. Ho creato una relazione ManyToMany per entrambe le classi:

class Category { /** * @ORM\ManyToMany(targetEntity="Item", mappedBy="categories", cascade={"persist"}) */ private $items; /** * Add items * * @param Ako\StoreBundle\Entity\Item $items */ public function addItems(\Ako\StoreBundle\Entity\Item $items) { $this->items[] = $items; } /** * Get items * * @return Doctrine\Common\Collections\Collection */ public function getItems() { return $this->items; } } 

E:

 class Item { /** * @ORM\ManyToMany(targetEntity="Category", inversedBy="items", cascade={"persist"}) * @ORM\JoinTable(name="item_category", * joinColumns={@ORM\JoinColumn(name="item_id", referencedColumnName="id")}, * inverseJoinColumns={@ORM\JoinColumn(name="category_id", referencedColumnName="id")} * ) */ private $categories; /** * Add categories * * @param Ako\StoreBundle\Entity\Category $categories */ public function addCategories(\Ako\StoreBundle\Entity\Category $categories) { $this->categories[] = $categories; } /** * Get categories * * @return Doctrine\Common\Collections\Collection */ public function getCategories() { return $this->categories; } } 

Ora nel mio controller:

 $em = $this->getDoctrine()->getEntityManager(); $item = $em->getRepository('AkoStoreBundle:Item')->find($item_id); $category = $em->getRepository('AkoStoreBundle:Category')->find($category_id); $category->addItems($item); $em->flush(); // Render the same page again. 

In questa pagina, mostro l’elenco di tutti gli elementi in un campo di selezione. L’utente può selezionare un elemento e aggiungerlo alla categoria.

L’elenco degli articoli che appartengono alla categoria sono mostrati sotto il modulo.

Quando invio il modulo, l’elemento selezionato viene aggiunto all’elenco degli elementi di categoria e viene mostrato di seguito, ma non viene memorizzato nel database e, se si aggiorna la pagina, scompare.

Qualcuno può aiutarmi per favore con questo? Grazie in anticipo.

L’entity framework della categoria è il lato inverso della relazione.

Prova a cambiare addItems in questo modo:

 public function addItem(\Ako\StoreBundle\Entity\Item $item) { $item->addCategory($this); $this->items[] = $item; } 

Nota che ho cambiato i nomi plurali in singolare, dal momento che hai a che fare con singole quadro, non con raccolte.

Ho avuto gli stessi problemi … penso che tu abbia dimenticato

 $category->addItems($item); $em->persist($category); $em->flush();