如果我有一個類表示在我的數據庫中以類:表關係訪問一個表,那麼我可以在一個類中隱藏表的詳細信息。但作爲任何有用的應用程序,我必須查詢幾個表。我怎樣才能適應這個使用類:表設計?使用Zend框架的MVC數據設計問題
2
A
回答
2
有幾種不同的方式可以實現這一點,但是,您選擇哪一種方式取決於您的情況。
1)打破你的目標和你的數據庫
之間的連接寫下您的對象與數據庫中的表沒有任何關係。首先規範你的數據庫表,然後,看看你的應用程序的用戶將如何與你的數據進行交互。將數據建模爲對象,但不要將每個對象綁定到表(即使用Zend_DB_Table_Abstract類)
一旦建立了對象,然後編寫映射器類,將映射對象映射回數據庫中的相關表。這些是擴展Zend_DB_Table的類(如果適用)。
您可以通過兩種方式處理連接,或者通過Zend_DB_Table關係functionallity來映射連接,或者((恕我直言,更好的選擇))只是使用Zend_DB_Select在您的映射器類中創建相關方法。
所以,你再有兩班(大概每桌,但不總是)
人 PersonMapper
在你的代碼中,當你想與一些對象的工作,無論是創建新的對象
$person = new Person();
$person->setName('andrew taylor');
然後寫它傳遞給映射器保存:
$personMapper = new PersonMapper();
$pesonnMapper->save($person);
或者說,它的其他方式:
$personMapper = new PersonMapper();
$person = personMapper->load(29);
$person->setName('joe bloggs');
$personMapper->save($person);
從這裏的下一步將是基於該SPL集合類:
$personList = $personMapper->loadAllMen();
foreach($personList AS $person) {
echo $person->getName();
}
其中$ personMapper-> loadAllMen()是方法等:
$select = $this->select();
$select=>where('gender = "Male"');
$zendDbRows = this->fetchAll($select);
return new PersonList($zendDbRows);
2)的MySQL視圖
如果你有很多連接的表,每個連接有一行,所以你根據你的訂單表中的id加入客戶信息,並且你只是以只讀方式進行操作(所以你不想更新通過Zend_DB_Table適配器提供的任何信息),您可以創建規範化的表格,然後創建頂部的單個視圖。視圖通過Zend來處理幕後的連接,就像你連接到一個表一樣。
這裏有一些注意事項,MySQL視圖確實有一些性能問題(這就是爲什麼它最好在單行FK連接上),而且它們是嚴格只讀的。
相關問題
- 1. Zend框架多數據庫問題
- 2. MVC優化問題框架Zend
- 3. zend框架問題
- 4. 使用路線的zend框架問題
- 5. Zend框架::一般應用程序設計問題
- 6. 框架設計問題
- 7. Zend框架模型設計
- 8. Zend框架的問題
- 9. 問題與Zend框架設置?
- 10. Zend框架網址問題?
- 11. zend框架FlashMessenger問題
- 12. Zend框架PDF多問題
- 13. Zend框架PartialLoop - 問題
- 14. Zend框架路由問題
- 15. 插件問題 - Zend框架
- 16. zend框架版本問題
- 17. Zend框架安裝問題
- 18. Zend框架查看問題
- 19. Symfony用戶框架設計問題
- 20. Zend框架使用數據表
- 21. 使用jQuery發佈Zend框架數據
- 22. 使用Zend框架實現MVC
- 23. Zend框架複選框問題
- 24. Zend框架教程 - 連接到數據庫的問題
- 25. MVC設計問題
- 26. MVC設計問題
- 27. MVC設計問題
- 28. MVC設計問題
- 29. zend框架中的sql問題
- 30. Zend框架的路由問題
你是什麼意思「但作爲任何有用的應用程序,我必須查詢幾個表。」 – Dinoboff 2008-10-09 10:09:08