Php 在symfony2中具有两种语义类型的实体
我需要在我的项目中有两种语义类型的实体; 假设Php 在symfony2中具有两种语义类型的实体,php,symfony,doctrine-orm,symfony-forms,Php,Symfony,Doctrine Orm,Symfony Forms,我需要在我的项目中有两种语义类型的实体; 假设Post实体可以是两种类型的Post:“文本”Post和“链接”Post。 所以我的post实体是这样的: Class Post{ private $id; private $type; private $text=nul; private $link=null; ... } 现在,根据类型字段,一篇文章只能有一个文本或链接字段,另一个字段应为空 我如何使用Symfony2/条令/表格实现这样的事情? 我应
Post
实体可以是两种类型的Post:“文本”Post和“链接”Post。所以我的post实体是这样的:
Class Post{
private $id;
private $type;
private $text=nul;
private $link=null;
...
}
现在,根据类型
字段,一篇文章只能有一个文本
或链接
字段,另一个字段应为空
我如何使用Symfony2/条令/表格实现这样的事情?
我应该将其拆分为两个实体,还是symfony可以处理这种情况?您可以在这种情况下使用。使用
LinkPost
和TextPost
共同的属性声明一个抽象类:
@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;
}