0

我正在尝试启动应用程序,但它不是用于管理医院,而是用于医生和患者。将有多种类型的用户将能够登录,例如医生、患者/监护人。

医生可以在多个地点拥有多个诊所,并且医生可以管理患者记录。一旦医生创建了患者帐户,患者就可以接受医生的预约或更新他的预约状态,接下来会有更多的东西。

问题是如何使用 ERD。?

我会有

User //User accounts used to login in to the system Doctor Patient Guardian Role Permission

这些是我目前创建的模型。但他们似乎不适合我..

我是否应该删除角色列,因为我已经为不同的预定义角色提供了不同的表。

或者它应该在那里。但是如果没有角色表,如何管理用户的权限。

也是最重要的。。

如何与用户一对一?我的意思是我应该去在用户模型中创建函数,例如。

public function doctor(){} public function guardian(){} public function patient(){}

或任何其他更好的方法可以遵循。

4

1 回答 1

1

如果他们都是用户,您可以从基本用户模型扩展不同的用户。

如果它们需要数据库中的不同列,请考虑单表继承。

如果角色是静态的,我会创建一个名为的类UserType,并将每个用户类型的常量映射到一个整数。在数据库中,用户表将有一个映射到该整数的类型列。

例如:

class UserType {
    const DOCTOR = 1;
}

在您的应用程序中,您将能够通过执行检查用户类型$user->type === UserType::DOCTOR

在 Eloquent 本身中,您可以扩展newFromBuilder方法来检查类型属性并返回子类(如Doctor)而不是User. 所以即使你这样做$user = User::find(1);了,你仍然会得到课程Doctor

创建用户时,您可以只创建Doctor自己,但请确保在 __construct 中设置适当的type属性。

所以现在你有了一个基User类,你的共享功能可以放在这里。专业的方法,例如与诊所的关系,可以在Doctor课堂上进行。

这有点类似于上面的:https ://github.com/Nanigans/single-table-inheritance

于 2017-02-26T06:34:15.003 回答