是否可以创建一个使用两列DiscriminatorColumn
?
存在3列的表格:
我已为main_type设置了继承:
/**
* @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
然而这不起作用,因为它也不知道在AbsractEvent上运行鉴别器映射。
我知道映射必须设置在最高级别,这就是为什么以上不起作用。
必须在作为映射实体层次结构一部分的最顶层类上指定@InheritanceType和@DiscriminatorColumn。 http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/inheritance-mapping.html#single-table-inheritance
可以使用自定义鉴别器吗?如果是这样的话?
或者是创建一个新列的更好的解决方案,该列组合了main_type和sub_type中的值并将这些值用于地图,即news-0,blog-0,event-1,event-2,event-3?
表结构来自遗留系统,无法修改,但可以添加其他列。