2017-02-26 23 views
0

我正在嘗試啓動一個應用程序,但它不適用於管理醫院,它將用於醫生和患者。 哪裏會有多種類型的用戶可以登錄,如醫生,病人/監護人。Laravel的一種醫院管理數據庫模式

醫生可以在多個地點有多個診所,醫生可以管理患者記錄。 一旦患者賬號由醫生創建,那麼患者可以從醫生處獲得預約或更新他的預約狀態,接下來會有更多的東西在那裏。

事情是如何去與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(){}

或任何其他更好的辦法是有遵循。

+0

是不同類型的用戶,如醫生和患者共享用戶表的? –

回答

1

如果他們都是用戶,則可以從基本用戶模型擴展不同的用戶。

如果它們在數據庫中需要不同的列,請考慮單個表繼承。

如果角色是靜態的,我會創建一個名爲UserType的類,並將每個用戶類型的常量映射爲一個整數。在數據庫中,用戶表將具有映射到此整數的類型列。

例如:

class UserType { 
    const DOCTOR = 1; 
} 

在您的應用程序,你就可以做$user->type === UserType::DOCTOR

在雄辯本身來檢查用戶的類型,可以延長newFromBuilder方法檢查type屬性並返回子類(如Doctor)而不是User。所以即使你做$user = User::find(1);,你仍然會得到類Doctor

創建用戶時,您可以自己創建Doctor,但請確保在__construct中設置相應的type屬性。

所以現在你有一個基地User類,你的共享功能可以在這裏。與診所相關的專業方法可參見Doctor課程。

這有點類似於上面:https://github.com/Nanigans/single-table-inheritance