Como evitar entradas duplicadas em um relacionamento muitos para muitos com o Doctrine?
Estou usando umincorporar formulário Symfony para adicionar e removerTag
entidades diretamente no editor de artigos.Article
é olado dono na associação:
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;
}
}
A condição não ajuda aqui, como sempre é verdade, e se não fosse, nenhuma nova tag seria persistida no banco de dados. Aqui está oTag
entidade:
class Tag
{
/**
* @Column(unique=true)
*/
private $name
/**
* @ManyToMany(targetEntity="Articles", mappedBy="tags")
*/
private $articles;
public function addArticle(Article $articles)
{
$this->articles[] = $articles;
}
}
Eu configurei$name
para exclusivo, porque quero usar a mesma tag sempre que digitar o mesmo nome no formulário. Mas não funciona dessa maneira, e recebo a exceção:
Violação de restrição de integridade: 1062 Entrada duplicada
O que preciso alterar para usararticle_tag
, a tabela de junção padrão ao enviar um nome de tag, que já está noTag
mesa?