2010-08-26 38 views
4

使用Zend從多個數據庫表中獲取數據是否有最佳做法?我想知道,而不是最終想重構我在不久的將來編寫的代碼。我讀了Zend文檔和它說:。使用Zend框架時從多個表中獲取數據?

「你不能從 加入提交的 行/行集返回指定列這樣做會引發 PHP錯誤這樣做爲確保 Zend_Db_Table的完整性爲 保留。即A Zend_Db_Table_Row 應該只引用從它的父表派生的 的列。「

我假設我需要使用多個模型 - 是否正確?例如,如果我希望獲得所有訂單的日期在兩個日期之間的特定用戶標識,我該怎麼辦?

我知道有可能從控制器訪問兩個不同的模型,然後在動作中組合他們各自的數據,但我不會因爲我一直在閱讀alivethedeepend.com和it tells me that I shouldn't do this而感到高興。

哪裏,爲什麼,如何? :)

謝謝!

回答

1

停止考慮Zend_Db_Table作爲您的「模型」。

您應該在控制器(和視圖)和持久性邏輯(使用Zend_Db/Zend_Db_Table/Zend_Db_Select的任何東西)之間編寫自己的,豐富的,以域爲中心的模型類來加載/存儲數據庫中的數據。

+0

你是在暗示,該模型將獲得進一步的類是從擴展Zend_Db_Table_Abstract? – olive 2010-08-26 19:18:24

+0

@Ihnz不,他暗示模型是你的應用程序,而你的控制器和視圖只是它的一個接口。 – Gordon 2010-08-26 19:53:13

+1

@ lhnz - 實際上,是的,但Gordon剛纔所說的其他一切都是真實的。您可能有一些持久性/數據映射器類,它們是您的更多以域爲中心的模型類使用的,但您的模型應該不僅僅是數據庫抽象。如果您發現自己正在使用直接在您的控制器中擴展Zend_Db_anything的類,那麼您需要創建一個更大的紅旗來創建更豐富的模型。 – timdev 2010-08-26 20:24:36