在Symfony3项目中,我已经使用了" single_table"继承性:
ADS\CoreBundle\Entity\CustomPage:
type: entity
table: custom_page
inheritanceType: SINGLE_TABLE
discriminatorColumn:
name: type
type: string
id:
id:
type: bigint
nullable: false
options:
unsigned: false
id: true
generator:
strategy: IDENTITY
fields:
content:
type: json_array
nullable: true
length: null
options:
fixed: false
creationdate:
type: datetime
nullable: true
column: creationDate
第二个实体
ADS\CoreBundle\Entity\ProductRangePublication:
type: entity
table: custom_page
manyToOne:
productRange2:
targetEntity: ProductRange
cascade: { }
fetch: LAZY
mappedBy: null
inversedBy: null
joinColumns:
productrange_id:
referencedColumnName: id
orphanRemoval: false
我想再次使用它,但是有两个类继承父类。 父母将是班级" Etfresearch"和孩子们的课程"文件"和"页面。" 我怎么能这样做?如何在同一个Doctrine配置文件中为两个不同的类放置两个鉴别器?
答案 0 :(得分:0)
将discriminatorMap
选项添加到父类定义:
App\Entity\Etfresearch:
type: entity
inheritanceType: SINGLE_TABLE
discriminatorColumn:
name: discr
type: string
discriminatorMap:
etfresearch: Etfresearch
document: Document
page: Page
App\Entity\Document:
type: entity
#[...]
App\Entity\Page:
type: entity
#[...]
例如,这会将“文档”映射到Document类,因此数据库中将其作为“discrimin”列的值的行将被标识为Document,并在您调用
时{ {1}}
请注意,当“文档”和“页面”扩展“Etfresearch”时,当您致电$this->getDoctrine()->getRepository(Document::class)->findAll();