簡體   English   中英

CakePHP:將數據庫“繼承”轉換為應用程序模型/控制器

[英]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 /模型的實體,但是它要先進得多,並且支持多表繼承和單表繼承。

看看: github上的erobwen / Cream

存儲庫中包含一張PowerPoint幻燈片,可對其工作方式進行進一步說明。 我發現它是一個非常強大的工具。

請在手冊中查看: http : //book.cakephp.org/view/1001/Understanding-Models

您將OO和關系數據建模混淆了。

對於采用這種方式設計的數據庫,您會建議哪種方法?

手冊鏈接到上面描述的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM