我试图用Doctrine创建一个简单的标记系统,但我不确定如何构建实体关系。可以拥有多个Tag的用户将是一个简单的ManyToMany关联,但是当我有两个或更多可以被标记的实体时会发生什么?
我有三个实体:用户,组和应用程序。可以标记所有三个实体。我怎样才能将这三者与Tag实体联系起来?
答案 0 :(得分:3)
您应该在用户,组和应用程序实体中映射Tag实体,如果您使用注释,那么每个提到的实体中的代码应该与此类似:
/**
* @ORM\Table(name="class_name")
* @ORM\Entity
*/
class ClassName {
// Definition of other attributes skipped
/**
* @ORM\ManyToMany(targetEntity="Tag")
*/
private $tags;
public function __construct(){
$this->tags = new ArrayCollection();
}
// Definition of other methods skipped
public function getTags(){
return $this->tags;
}
public function setTags($tags){
$this->tags = $tags;
}
public function addTag(Tag $tag){
$this->tags->add($tag);
}
public function removeTag(Tag $tag){
$this->tags->remove($tag);
}
}