我在 PHP (Kohana) 中使用了一个面向对象的 MVC 框架,并且将一些技术混合在一起来完成工作。问题是我不确定如何在每页调用大量查询的情况下保持清洁。
为了说明我的示例,我假设我正在设计一个类似站点的堆栈溢出:
我有一个问题模型类 ( question_model
) 以及一个问题查找器模型类 ( question_finder_model
)。
question_model 主要只包含存储问题数据的变量、答案对象数组和一些工厂方法。就像是:
class question_model {
public $question_id,$question_title,$question_body,$answers = array();
}
问题查找器包含一个 question_model 对象数组以及一个问题 ID 数组。id 数组由类中的 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 个查询。
如果这有点模糊,我很抱歉,因为这个问题很难表达。任何帮助都将不胜感激,因为我的整个模式都有缺陷。