Doctrine 2中多个实体的标签

时间:2014-05-01 21:40:37

标签: php symfony doctrine-orm

我试图用Doctrine创建一个简单的标记系统,但我不确定如何构建实体关系。可以拥有多个Tag的用户将是一个简单的ManyToMany关联,但是当我有两个或更多可以被标记的实体时会发生什么?

我有三个实体:用户,组和应用程序。可以标记所有三个实体。我怎样才能将这三者与Tag实体联系起来?

1 个答案:

答案 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);
    }
}