[英]CakePHP: Translating database 'inheritance' into app models/controllers
我目前正在為包含許多不同用戶類型的系統設計一個數據庫。 我的架構如下所示:
## Users
id INT
name VARCHAR(60)
email VARCHAR(60)
## Doctors
id INT
user_id INT
specialism VARCHAR(60)
qualification_id INT
本質上,Doctors表是Users表的子級。
現在,當我在Cake中創建模型,控制器和模型時,我認為創建User模型然后用Doctor模型子類化是合乎邏輯的。 但這在使用$ scaffold進行測試時似乎不起作用( “有一個”和“屬於”關系相對較好,但是這樣我就不會將Users類子類化了)。
對於采用這種方式設計的數據庫,您會建議哪種方法?
CakePHP不是為此設計的。 CakePHP使用ActiveRecord模式。 當您的模型與數據庫表大致匹配時,此模式非常有用。 但是當您要以現在嘗試的方式設置模型時,它就會崩潰。 對於您的設置,您需要類似Data Mapper模式的東西(例如,由Zend_Db實現)。
在您的情況下,我將簡單地將User和Docter設置為具有hasOne / belongsTo關系的兩個單獨的模型。 與“蛋糕式”流程相比,與之抗爭要容易得多。
您可以在面包店找到有關此問題的非常好的文章。 我還沒有嘗試過該解決方案,但是我一定會做。
我已經思考這個問題已有一段時間了,最終我終於找到解決方案。 我想到的是可以在CakePHP之上使用的新ORM。
它類似於CakePHP 3.0,具有代表ID /模型的實體,但是它要先進得多,並且支持多表繼承和單表繼承。
存儲庫中包含一張PowerPoint幻燈片,可對其工作方式進行進一步說明。 我發現它是一個非常強大的工具。
請在手冊中查看: http : //book.cakephp.org/view/1001/Understanding-Models
您將OO和關系數據建模混淆了。
對於采用這種方式設計的數據庫,您會建議哪種方法?
手冊鏈接到上面描述的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.