Hi I have a many to many relation between Items(Products) and categories and I implemented using these three entities:
Item Entity:
/** * @Entity * @Table(name="items") */ use Doctrine\Common\Collections\ArrayCollection; class Item { /** * * @Id @Column(type="integer") * @GeneratedValue */ private $id_item; /** @OneToMany(targetEntity="ItemCategories", mappedBy="item") */ protected $categories; public function __construct() { $this->categories=new ArrayCollection(); } public function addCategory(ItemCategories $category){ $this->categories->add($category); } public function getCategories(){ return $this->categories; } }
2 Join Table (ItemCategories)
/** * @Entity * @Table(name="item_categories") */ class ItemCategories { /** * * @Id @Column(type="integer") * @GeneratedValue */ private $id; /** * @Column(type="integer") */ private $id_item; /** * @Column(type="integer") */ private $id_category; /** @ManyToOne(targetEntity="Category", inversedBy="ItemCategories") * @JoinColumn(name="id_category", referencedColumnName="id_category") * */ protected $category; /** @ManyToOne(targetEntity="Item", inversedBy="$categories") * @JoinColumn(name="id_item", referencedColumnName="id_item") * */ protected $item; public function getCategory() { return $this->category; } public function setCategory($category) { $this->category = $category; } public function getItem() { return $this->item; } public function setItem($item) { $this->item = $item; } }
3.Categories Table
/** * @Entity * @Table(name="categories") */ class Category { /** * * @Id @Column(type="integer") * @GeneratedValue */ private $id_category; /** @OneToMany(targetEntity="ItemCategories", mappedBy="category") */ protected $ItemCategories; /** * * @Column(type="string") @var string */ }
Now my problem is that i don't know how to insert an item using EXISTING categories. I tried:
$item= new Entity\Item();
$itemCategoriesReferences=new Entity\ItemCategories();
$productCategoriesReferences->setItem($product);
//get existing category from db using PkId
$itemCategoriesReferences->setCategory($CategoryModel->getCategory(1));
$item->addCategory(itemCategoriesReferences);
I know that it does not make much sens but I don't have any another idea, so please help me out.
Thanks