Doctrina 2 muchos a muchos (Productos - Categorías)
Hola, tengo una relación de muchos a muchos entre los Artículos (Productos) y las categorías y lo implementé usando estas tres entidades:
Entidad del artículo:
/**
* @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 Unirse a la tabla (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 Tabla
/**
* @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
*/
}
Ahora mi problema es que no sé cómo insertar un elemento utilizando las categorías EXISTENTES. Lo intenté:
$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);
Sé que no tiene mucho sentido, pero no tengo otra idea, así que por favor, ayúdenme.
Gracias