php - Doctrine 2 继承映射 : can NULL be used as a discriminator?

标签 php inheritance orm doctrine-orm

我有以下类层次结构:

/**
 * @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;
}

在这个领域模型中,我们在层次结构中只有两个可能的级别,因此区分为 RootCategorySubCategory

我发现必须指定一个明确的鉴别器列是多余的,我们可以只使用一个简单的规则作为鉴别器:

  • 如果 parentIdnull,则这是一个 RootCategory
  • 如果 parentIdnot 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/

相关文章:

javascript - 如果可见,则添加 div 选择以在最后获得总计

c++ - 通过基类构造函数从驱动类模板值初始化基类数组成员变量

php - Symfony2实体orm中的自定义查询

php - 在 Doctrine ORM 中实现 "update if exists"

java - hibernate :查找重复项

javascript - 将信息从 javascript 对话框发送到 php

PHP While 从数组循环

c++ - 从递归模板类继承

ios - 在 iPhone 上构建时不继承子类变量

php - 用于 PHP 的 Richtext 编辑器 - MySQL Web 应用程序