首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Custom自定义判别器映射

Custom自定义判别器映射
EN

Stack Overflow用户
提问于 2018-06-05 06:54:47
回答 1查看 266关注 0票数 1

因此,我正在致力于将Symfony 3集成到遗留代码库中,大多数情况下,一切都很好。不幸的是,我在使用时髦的鉴别器时遇到了一些单表继承的问题。注意:我不能更改模式(至少短期内不能更改),因为它与许多旧代码绑定在一起。

我有典型的Person ->员工映射。有了这个,我有两个表:

  • Company
  • Person

转换为3个实体

  • Company
  • Person
    • Employee

这看起来非常简单,但唯一可行的鉴别器是company_id,它是一个关于person的列,表明该person属于哪个公司。如果company_id =1,则为员工,否则为普通人。

因此,据我所知,我需要一个如下所示的地图:

代码语言:javascript
复制
/**
 * @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,则会因为表名已经存在而出现错误。这使得维护映射变得更加困难。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50689844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档