因此,我正在致力于将Symfony 3集成到遗留代码库中,大多数情况下,一切都很好。不幸的是,我在使用时髦的鉴别器时遇到了一些单表继承的问题。注意:我不能更改模式(至少短期内不能更改),因为它与许多旧代码绑定在一起。
我有典型的Person ->员工映射。有了这个,我有两个表:
转换为3个实体
这看起来非常简单,但唯一可行的鉴别器是company_id,它是一个关于person的列,表明该person属于哪个公司。如果company_id =1,则为员工,否则为普通人。
因此,据我所知,我需要一个如下所示的地图:
/**
* @InheritanceType( "SINGLE_TABLE" )
* @DiscriminatorColumn( name = "company_id", type = "integer" )
* @ORM\DiscriminatorMap({
* 1 = "Employee",
* 2 = "Person",
* 3 = "Person",
* ...
* 5001 = "Person"
* })
*
* @ORM\Table(name="person")
* @ORM\Entity
*/
class Person
{}
这种映射方式是不可能维护的。我已经环顾了四周,但我还没有找到一个好的解决方案。现在,我使用一个映射的超类,然后将Person和Employee都指向person表,这从代码的角度来看是可行的,但是如果我运行schema validate it,则会因为表名已经存在而出现错误。这使得维护映射变得更加困难。
https://stackoverflow.com/questions/50689844
复制相似问题