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?

questionAnswers(2)

yourAnswerToTheQuestion