作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有以下类层次结构:
/**
* @Entity
* @InheritanceType("SINGLE_TABLE")
* @DiscriminatorColumn(name="discr", type="string")
* @DiscriminatorMap({"root" = "RootCategory", "sub" = "SubCategory"})
*/
class Category
{
/**
* @Id @Column(type="integer") @GeneratedValue
*/
protected $id;
}
/**
* @Entity
*/
class RootCategory extends Category
{
}
/**
* @Entity
*/
class SubCategory extends Category
{
/**
* @ManyToOne(targetEntity="RootCategory")
* @JoinColumn(name="parentId", referencedColumnName="id")
*/
protected $parent;
}
在这个领域模型中,我们在层次结构中只有两个可能的级别,因此区分为 RootCategory
或 SubCategory
。
我发现必须指定一个明确的鉴别器列是多余的,我们可以只使用一个简单的规则作为鉴别器:
parentId
为 null,则这是一个 RootCategory
parentId
为 not null,则这是一个 SubCategory
Doctrine 2 是否可以使用列的 NULL 状态作为鉴别器?
最佳答案
不,这是不可能的。
如果您查看 source code of Doctrine 2你会看到他将 DiscriminatorMap
转换为数组,不能有 NULL 键,只有字符串或整数。
关于php - Doctrine 2 继承映射 : can NULL be used as a discriminator?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8240624/
我是一名优秀的程序员,十分优秀!