Laravel中医院管理类型的数据库模式

时间:2017-02-26 05:12:09

标签: laravel laravel-5.4 laravel-eloquent

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

例如:

class UserType {
    const DOCTOR = 1;
}

在您的应用程序中,您可以通过执行$user->type === UserType::DOCTOR

来检查用户类型

在Eloquent本身中,您可以扩展newFromBuilder方法来检查type属性并返回子类(如Doctor)而不是User。因此,即使您$user = User::find(1); Doctor,您仍会获得课程Doctor

创建用户时,您只需创建type本身,但请确保在__construct中设置相应的User属性。

现在你有一个基础Doctor课程,你的共享功能可以在这里。专业方法,如与诊所的关系,可以进入 this.emit('JustRight', () => { this.emit(':ask', guessNum.toString() + 'is correct! Would you like to play a new game?', 'Say yes to start a new game, or no to end the game.'); }); 班。

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