gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 21:16:09 25 4
gpt4 key购买 nike

我有以下类层次结构:

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com