我正在做一个项目,我有这个疑问。 我有一个 IS-A 关系,如下所示:
Users
作为父表,Companies、Admins 和 Customers
作为子表。由于它们都有不同的属性,我决定创建 4 个表并将它们链接到 Users
表,该表将保存登录信息,这是 child 之间的公共(public)信息。
我的挣扎是,如果 parent 显然不存在,我就无法创建 child ,但我想让客户和公司自己注册,所以我提出的解决方案是插入一个新的user
,然后从users
中获取max id 并插入一个customer
。但我不确定这是否是一个好方法,如果多人同时尝试注册会怎样?
我可以从数据库而不是我的代码控制父插入吗?也许用触发器?
这对我来说更有意义,主要是因为用户本身在我的上下文中没有任何意义,它要么是客户、管理员,要么是公司。
最佳答案
鉴于,就像你说的,用户本身没有任何意义,我认为你的用户类应该是抽象的。这样您就不必创建任何用户,信息直接从您的子实体中的用户类继承。
详细编辑:从学说的角度来看,只需在您的父实体(用户)上使用 @ORM\MappedSuperclass
注释。您的子实体无事可做。这样,每个子实体都将继承父实体的所有属性和方法,在您的情况下,这就是我理解您想要做的。我让您阅读有关这一点的学说文档的特定部分:
Doctrine inheritance mapped superclass
希望这对您有所帮助。
关于php - 类表继承实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30208448/