在我的應用程序中,我有用戶,組織和員工。有每個這些域對象和數據庫映射器。這應該是控制器還是域的責任?
當用戶最初設置一個組織時,我想爲該用戶/組織組合自動創建一個員工記錄。 (記錄的類型將是所有者)。基本上這涉及到兩個數據庫插入:一個用於組織,另一個用於員工。
我可以看到兩種方式去了解這一點:
- 控制器可以創建新的組織對象,並使用一個映射,
orgMapper::insert($newOrg)
,堅持它。完成後,可以創建新的Employee對象,並再次使用映射器employeeMapper::insert($newOwner)
進行持久化。 - 控制器可以創建新的組織對象,並且該對象完成工作的其餘部分。它會調用
orgMapper::insert($this)
,並且返回的鍵將創建並保留新的Employee對象。
第二種方法似乎有許多好處:業務邏輯(即每個新組織的員工/所有者記錄)嵌入在模型中,而控制器更加瘦小。我猶豫的唯一原因是這意味着我的域名變得依賴於我的映射器。
我會使用域中的工廠來獲取映射器,所以所有的耦合將歸結爲一個點。這是否使依賴關係可以接受?或者我有更深的設計問題?
我已經讀了一點關於服務層。也許這是我應該看的地方?
我使用PHP和Zend框架
您的想法是非常感謝。我的貓和我已經用盡了我們自己的想法...
我會更多地關注某種類型的服務層,他的唯一工作是管理數據庫參照完整性,並將這項工作從個人數據映射器中提取出來。至少,儘管實現此目的所需的代碼很短,但它應該爲您提供可重用的編碼規則,以管理在同一數據集上工作的其他項目。恕我直言。希望我有道理。但是,根據你使用的數據庫軟件的不同,可能會錯過db級別的功能。你使用的是哪個數據庫? –
@ bob-the-destroyer,我正在使用mySql –
這些表的引擎是什麼? Myisam或innodb? –