我在PHP(Kohana)中使用了一個面向對象的MVC框架,並且有種混合了一些技巧來完成一些東西。問題是我不知道如何保持清潔,而不必每頁調用大量的查詢。MVC面向對象技術 - 如何最小化查詢並保持靈活性?
爲了說明我的榜樣,我會想象我設計的網站一樣堆棧溢出:
我有一個問題(question_model
)模型類,以及一個問題取景器(question_finder_model
)。
question_model主要包含變量來存儲問題數據,答案對象數組和一些工廠方法。例如:
class question_model {
public $question_id,$question_title,$question_body,$answers = array();
}
問題finder容器包含一個question_model對象數組以及一個問題ID數組。 ids數組由類中的find方法填充並由其他方法使用。例如:
class question_finder_model {
private $question_ids = array();
public $questions = array() ; //
function public find_questions() {
// executes some SQL to find a list of projects
// Create a new question_model object for each question and store in $questions
// for each of these questions store the id in $questions_ids
}
function public get_answer_info() {
// using all the question ids stored in $question_ids:
// find information about the answers
}
}
因此,我對我所有的模型都使用此方法,例如我的用戶模型將包含一組問題對象。
問題是,它變得越來越難處理,例如我的問題包含許多答案,每個答案可以包含許多評論等。我怎樣才能填充所有這些對象,而無需多次查詢。我的意思是簡單的方法是迭代通過我的問題對象數組,並調用存儲在問題類中的函數,該函數獲取該對象的答案信息。但接下來我會調用每頁10或100個查詢。
我很抱歉,因爲這個問題很難表達清楚,所有這一切都很朦朧。任何幫助,因爲perhpas我的整個模式是有缺陷的。
「最後不要掛機試圖讓每一個案件都正確。」 < - 這是很好的建議。 – johnny 2014-08-26 18:40:52