Как избежать повторяющихся записей в отношениях «многие ко многим» с Doctrine?
Я используювставлять форму Symfony добавить и удалитьTag
лица прямо из редактора статьи.Article
этовладеющая сторона по ассоциации:
class Article
{
/**
* @ManyToMany(targetEntity="Tags", inversedBy="articles", cascade={"persist"})
*/
private $tags;
public function addTag(Tag $tags)
{
if (!$this->tags->contains($tags)) // It is always true.
$this->tags[] = $tags;
}
}
Условие здесь не помогает, так как оно всегда верно, и если это не так, никакие новые теги не будут сохранены в базе данных вообще. ЗдесьTag
юридическое лицо:
class Tag
{
/**
* @Column(unique=true)
*/
private $name
/**
* @ManyToMany(targetEntity="Articles", mappedBy="tags")
*/
private $articles;
public function addArticle(Article $articles)
{
$this->articles[] = $articles;
}
}
Я установил$name
к уникальному, потому что я хочу использовать один и тот же тег каждый раз, когда я ввожу одно и то же имя в форму. Но это не работает, и я получаю исключение:
Нарушение ограничения целостности: 1062 Повторяющаяся запись
Что мне нужно изменить, чтобы использоватьarticle_tag
таблица соединений по умолчанию при отправке имени тега, которая уже находится вTag
Таблица?