Я столкнулся с большой проблемой с типом формы коллекции для отношения ManyToMany в моем проекте Symfony2.
Среда: - Symfony 2.0.14 - Доктрина 2.1
Вот код:
Почтовый объект
class Post
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="string", length=255, nullable=false)
*/
private $title;
/**
* @ORM\ManyToMany(targetEntity="Tag", inversedBy="posts", cascade={"persist"})
* @ORM\JoinTable(name="posts_tags")
*/
private $tags;
public function setTags(\Doctrine\Common\Collections\ArrayCollection $tags)
{
foreach($tags as $tag)
{
$tag->addSnippet($this);
}
}
public function addTag(\My\BlogBundle\Entity\Tag $tags)
{
$this->tags[] = $tags;
}
public function getTags()
{
return $this->tags;
}
Объект тега
class Tag
{
/**
* @var integer $id
*
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string $name
*
* @ORM\Column(type="string", length=100, unique=true, nullable=false)
*/
private $name;
/**
* @var Snippet
*
* @ORM\ManyToMany(targetEntity="Post", mappedBy="tags")
*/
private $posts;
public function addSnippet(\My\BlogBundle\Entity\Post $posts)
{
$this->posts[] = $posts;
}
Класс формы PostType
->add('tags', 'collection', array(
'type' => new TagType(),
'allow_add' => true,
'prototype' => true,
'by_reference' => false,
))
Все работает отлично, но выдает ошибку при вставке тега, который уже существует в базе данных SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'tag1' for key 'UNIQ_6FBC94265E237E06'
.
У вас есть обходной путь для этой проблемы или я что-то упустил? Мой контроллер — это стандартный CRUD-контроллер, сгенерированный app/console
.enter code here