カテゴリとアイテムという2つの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.
を、私はすべての項目のリストを表示します選択フィールドに入力します。ユーザーは1つの項目を選択してカテゴリーに追加することができます。
カテゴリに属するアイテムのリストがフォームの下に表示されます。
フォームを送信すると、選択したアイテムがカテゴリアイテムのリストに追加され、下に表示されますが、データベースに保存されず、ページを更新すると消えます。
誰でもこの手伝いできますか? ありがとうございます。
を忘れてしまったと思います。 すべてのタイプのデータベースマッピング(エンティティマッピング)を示す適切な(完全な)ドキュメンテーションリンクはありますか? – Kiran