类表继承实现

时间:2015-05-13 07:33:21

标签: php mysql database

我正在从事一个项目并且我已经怀疑了这个问题。 我有一个IS-A关系,看起来像这样:

Users作为父表,然后Companies, Admins and Customers作为子表。由于它们都具有不同的属性,我决定创建4个表并将它们链接到Users表,该表将保存登录信息,这是子项之间的公共信息。

我的奋斗是,如果父母并不存在,我就无法创造一个孩子,但我想让顾客和公司自己注册,所以解决方案我是我们现在正在插入新的user,然后从users获取最大ID并插入customer。但我不确定这是一个好方法,如果有多个人尝试立即注册会怎么样?

我可以控制数据库中的父插入而不是我的代码吗?也许有触发器?

这对我来说更有意义,主要是因为用户本身在我的上下文中没有任何意义,它可以是客户,管理员或公司。

1 个答案:

答案 0 :(得分:1)

鉴于,就像你说的那样,用户本身没有任何意义,我认为你的用户类应该是抽象的。这样您就不必创建任何用户,该信息将直接从子实体中的User类继承。

详细编辑:从学说的角度来看,只需在父实体(用户)上使用@ORM\MappedSuperclass注释即可。你的孩子实体无所事事。这样,每个子实体都将继承父实体的所有属性和方法,在您的情况下,这是我理解您想要做的。我让你阅读关于这一点的学说文档的具体部分:

Doctrine inheritance mapped superclass

希望这有帮助。