在符号2中具有两种语义类型的实体2



我需要项目中的实体具有两种语义类型;假设CCD_ 1实体可以是两种类型的post:"text"post&"链接"帖子
所以我的帖子实体是这样的:

Class Post{
    private $id;
    private $type;
    private $text=nul;
    private $link=null;
    ...
}

现在,基于type字段,帖子只能有textlink字段中的一个,另一个应该是Null
我如何用Symfony2/原则/形式来实现这样的东西
我应该把它分成两个实体,还是symfony可以处理这种情况?

在这种情况下可以使用继承。声明一个具有LinkPostTextPost公用属性的抽象类:

@Entity
@InheritanceType("SINGLE_TABLE")
@DiscriminatorColumn(name="discriminator", type="string")
@DiscriminatorMap({"text"="TextPost", "link"="LinkPost"})
abstract class Post {
    @Id @GeneratedValue @Column
    private $id;
    @ManyToOne(...)
    private $author;
}
@Entity
class TextPost extends AbstractPost {
    @Column
    private $content;
}
@Entity
class LinkPost extends AbstractPost {
    @Column
    private $url;
}

最新更新