我正在用CodeIgniter構建一個站點,我的模型名爲Blog_model
。OOP,MVC - 模型和對象
在Blog_model
之內,有一些方法可以爲特定主題提取帖子列表,例如,getPopularPosts()
。
getPopularPosts()
查詢帖子表以獲得與指定的匹配的topic_id
的帖子列表,並按受歡迎程度排序它們。因此,這是針對整個帖子的一個查詢(讓我們假設這將是非常大的最終)找到所有帖子topic_id
x。
然後,foreach
結果as
單個帖子ID,它創建一個新的Post
對象。 Post
類通過設置字段id
來構建帖子。
要返回Post
的內容,我分配了$post->getPost();
,它再次查詢帖子表以返回給定的id
的整個行。
這個組織(AFAIK)遵循一個很好的面向對象的原則。但現在,對於每一篇文章(再次假設成千上萬,......),我必須首先查詢id
s的列表,然後再次獲取每篇文章的內容。如果我要返回30個帖子,則表示31個單獨的查詢。
可替換地,我可以打破面向對象模式和在其中posts
= topic_id
X拉*
對於每個柱。然後,我有一個查詢返回所有30個帖子,但現在我不覺得如此面向對象。
怎麼辦?
你覺得「感覺如此面向對象」很重要嗎? - 如果您擔心性能或其他問題,可以將其作爲完整的更改後的後端運行,並將結果寫入平面文本文件。那麼你甚至不需要爲每個帖子運行查詢,你可以使用初始查詢中的id來顯示緩存文件的結果。但是,如果你正在尋找一個評論,選擇你提到的選項之一,我會去加入一個查詢。如果我沒有弄錯的話,代碼點火器並不是嚴格的oo。我認爲Kohana是,他們有ORM來做你想做的事情。 –
如果它有所不同,它是CodeIgniter 2. – Peter
在你的問題中有很多信息,如果你想讓它們在這裏得到適當的解決,請給出代碼的具體例子。 – jondavidjohn