【问题标题】:Database Schema for kind of Hospital Management in LaravelLaravel 中医院管理类型的数据库模式
【发布时间】:2017-02-26 14:39:29
【问题描述】:

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

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

问题是如何使用 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(){}

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

【问题讨论】:

  • 医生、病人等不同类型的用户是否共享用户表?

标签: laravel laravel-5.4 laravel-eloquent


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-12
    • 1970-01-01
    • 1970-01-01
    • 2020-06-08
    相关资源
    最近更新 更多