Doctrine orm 条令单表继承自定义鉴别器映射
是否可以创建一个实体,该实体使用两列作为Doctrine orm 条令单表继承自定义鉴别器映射,doctrine-orm,Doctrine Orm,是否可以创建一个实体,该实体使用两列作为鉴别器列 存在一个包含3列的表: id(主键) 主_类型(varchar 5) 子类型(int 4) 我已设置了主\u类型的继承: /** * @ORM\Entity * @ORM\Table(name="article") * @ORM\InheritanceType("SINGLE_TABLE") * @ORM\DiscriminatorColumn(name="main_type", type="string") * @ORM\Disc
鉴别器列
存在一个包含3列的表:
- id(主键)
- 主_类型(varchar 5)
- 子类型(int 4)
/**
* @ORM\Entity
* @ORM\Table(name="article")
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(name="main_type", type="string")
* @ORM\DiscriminatorMap({
* "news" = "News",
* "blog" = "Blog",
* "event" = "AbstractEvent",
* })
*/
abstract class AbstractArtcile
到目前为止,这是可行的,但是事件可以有许多子类型。在事件中,需要以下内容:
* @ORM\DiscriminatorColumn(name="sub_type", type="string")
* @ORM\DiscriminatorMap({
* 1 = "Event\Sport",
* 2 = "Event\Night",
* 3 = "Event\Epic",
* })
abstract class AbstractEvent
但是,这不起作用,因为它也不知道在AbstractEvent上运行鉴别器映射
我知道映射必须设置在最顶层,这就是为什么上面的方法不起作用
必须在作为映射实体层次结构一部分的最顶层类上指定@InheritanceType和@DiscriminatorColumn。
可以使用自定义鉴别器吗?如果是,怎么做
或者,更好的解决方案是创建一个新列,将main_类型和sub_类型中的值组合起来,并将其用于地图,即news-0、blog-0、event-1、event-2、event-3
表结构来自旧系统,无法修改,但可以添加其他列。不确定它是否有助于进一步解决问题。但是,您是否尝试过为您的
抽象事件
使用。如果您只需要事件
,使用类别的特征,您可能能够解决这个问题。事件可能包含各种类型的事件(运动/夜间/史诗/任何类型)。不确定它是否有助于进一步解决您的问题。但是,您是否尝试过为您的抽象事件
使用。如果您只需要事件
,使用类别的特征,您可能能够解决这个问题。活动可以举办各种类型的活动(运动/夜间/史诗/任何类型)。