我有一个经典的多对多教义关系,并且教义自动生成了一个数据透视表(“ article_tag”)。
我不知道如何设置唯一约束,以便该数据透视表中的每个条目(该表没有单独的Entity类)都是唯一的。有人可以分享一个例子吗?
您是什么意思?您需要哪种独特性?
例如,如果您的Article Entity
和Tag Entity
具有ManyToMany关系,Symfony会生成两个与Entity相关联的表(对于article
和tag
),而第三个表article_tag
具有两列article_id,tag_id。在Article Entity
中,您可以找到以下方法:getTags(),addTag(),removeTag()
/**
* @return Collection|Tag[]
*/
public function getTags(): Collection
{
return $this->tags;
}
public function addTag(Tag $tag): self
{
if (!$this->tags->contains($tag)) {
$this->tags[] = $tag;
}
return $this;
}
public function removeTag(Tag $tag): self
{
if ($this->tags->contains($tag)) {
$this->tags->removeElement($tag);
}
return $this;
}
addTag()和removeTag()检查标记是否包含在集合中,然后进行更改
但是如果要添加新列到article_tag
表(orderIdx等),则需要使用ArticleTag Entity
->Article
ManyToOne关系和ArticleTag
创建Tag
- >ArticleTag
ManyToOne关系
祝您有美好的一天!