php - 类表继承实现

标签 php mysql database

我正在做一个项目,我有这个疑问。 我有一个 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/

相关文章:

python - 有人在 Cygwin 上安装 MySQLdb for Python 吗?

android - 如何在 Android 中立即从服务器获取新数据?

php - 当BindParam中的变量为null时如何插入DEFAULT

php - 在哪里将 PHP 实现到 HTML 和 CSS 页面中?

php - 从 MySQL 中选择可变数量的随机记录

mysql存储过程问题: insert runs first and always whatever If condition I put

sql - 具有代理键的表是否需要对自然键的唯一约束才能处于 1NF 中?

PHP 和 MySql - 从两个表中获取行

php - 当我在第一次点击后禁用提交时,为什么我的表单没有提交?

mysql - Sum 和 Group By 问题