Tengo dos clases de modelo PHP denominadas Category y Item. Una Categoría puede tener muchos Elementos y un Artículo puede pertenecer a muchas Categorías. He creado una relación ManyToMany a ambas clases:Symfony2-Doctrine: la relación ManyToMany no se guarda en la base de datos
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;
}
}
Y:
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;
}
}
Ahora en mi controlador:
$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.
En esta página, se muestra la lista de todos los artículos en un campo selecto El usuario puede seleccionar un elemento y agregarlo a la categoría.
La lista de elementos que pertenecen a la categoría se muestran debajo del formulario.
Cuando presento el formulario, el elemento seleccionado se agrega a la lista de Artículos de categoría, y se muestra a continuación, pero no se almacena en la base de datos, y si actualiza la página, desaparece.
¿Alguien puede ayudarme con esto? Gracias de antemano.
Por encima de correos me ayuda mucho para mapear muchos a muchos mapeo en la Entidad. ¿Existe algún enlace de documentación bueno (completo) que muestre todo tipo de asignación de base de datos (correlaciones de entidades)? – Kiran