我有兩個名爲Category和Item的PHP模型類。類別可能有許多項目,並且項目可能屬於許多類別。 我創建了一個多對多關係到這兩個類:Symfony2-Doctrine:ManyToMany關係未保存到數據庫
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;
}
}
和:
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;
}
}
在我的控制器
現在:
$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.
在這個頁面中,我將展示所有項目的列表在選擇字段中。用戶可以選擇一個項目,並將其添加到該類別。
屬於該類別的項目列表顯示在窗體下方。
當我提交表單時,所選項目被添加到類別項目列表中,如下所示,但它不存儲在數據庫中,並且如果刷新頁面,它將消失。
任何人都可以幫助我嗎? 在此先感謝。
上述職位幫助我很多很多映射到實體很多映射。 是否有任何可以顯示所有類型的數據庫映射(實體映射)的良好(完整)文檔鏈接? – Kiran