Имеем таблицу: Goods
Имеем таблицу: Tags
Используется SonataAdminBundle
Необходимо реализовать следующее: В админке при создание, редактирование товара, должно быть поле с тегами(multiple), при выборе нескольких тегов (или даже одного), эта выборка должна сохраняться и привязываться к этому товару. При редактировании должно показываться все теги и выделяться уже выбранные.
Что я для этого сделал. Сделал я промежуточную таблицу:GoodsHasTags. В ней такой код
/**
* @ORM\Entity
* @ORM\Table(name="goods_tags")
*/
class GoodsHasTags {
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToOne(targetEntity="Goods", inversedBy="goods_tags", cascade={"all"})
*/
protected $id_goods;
/**
* @ORM\ManyToOne(targetEntity="Tags", inversedBy="goods_tags")
* @ORM\JoinColumn(name="id_tags_id", referencedColumnName="id")
*/
protected $id_tags;
/**
* Get id
*
* @return integer
*/
public FUNCTION getId()
{
RETURN $this->id;
}
/**
* Set id_goods
*
* @param \JAuto\CategoryBundle\Entity\Goods $idGoods
* @return GoodsHasTags
*/
public FUNCTION setIdGoods(\JAuto\CategoryBundle\Entity\Goods $idGoods = NULL)
{
$this->id_goods = $idGoods;
RETURN $this;
}
/**
* Get id_goods
*
* @return \JAuto\CategoryBundle\Entity\Goods
*/
public FUNCTION getIdGoods()
{
RETURN $this->id_goods;
}
/**
* Set id_tags
*
* @param \JAuto\CategoryBundle\Entity\Tags $idTags
* @return GoodsHasTags
*/
public FUNCTION setIdTags(\JAuto\CategoryBundle\Entity\Tags $idTags = NULL)
{
$this->id_tags = $idTags;
RETURN $this;
}
/**
* Get id_tags
*
* @return \JAuto\CategoryBundle\Entity\Tags
*/
public FUNCTION getIdTags()
{
RETURN $this->id_tags;
}
К сожелению запутался в связях.... Если не трудно, подскажите кто разбирается или разобрался. Спасибо.
P.S. При необходимости могу предоставить код с других сущностей.
Да, еще момент. Связи в mysql прописаны вроде как верно, ибо если создавать записить то в таблице выбирается все правильно. То есть при выборе id_goods показаны id только goods при выборе id_tags - так же. То есть как бы норм там все.