首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一种基于Laravel的医院管理数据库模式

一种基于Laravel的医院管理数据库模式
EN

Stack Overflow用户
提问于 2017-02-26 13:12:09
回答 1查看 500关注 0票数 0

我正在尝试启动一个应用程序,但它不是为了管理医院,它将是为医生和病人。其中将有多种类型的用户将能够登录,如医生,患者/监护人。

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

问题是如何处理ERD。??

我要一份

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

这些是我目前创建的模型。但在我看来不太对劲..

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

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

同样最重要的是..

如何跟用户一对一地走??我的意思是,我是否应该在用户模型中创建函数,比如。

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

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

EN

回答 1

Stack Overflow用户

发布于 2017-02-26 14:34:15

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

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

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

例如:

代码语言:javascript
复制
class UserType {
    const DOCTOR = 1;
}

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

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

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

现在你有了一个基本的User类,你的共享功能可以放在这里。专门的方法,比如与诊所相关的方法,可以放在Doctor类中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42464989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档