1

收集相关数据的最有效方法是什么?

假设我们有多个项目与一个类别 1:M 相关联。

每个项目都保存它所属的类别的 ID 值。我有一个包含所有项目的数组对象,我现在想向该数组对象添加它的类别名称而不是它的 ID。

因此,例如,而不是:

project_id:1 project_title:第一个项目 project_desc:bla bla project_category_id:1

我希望它是:

project_id:1 project_title:第一个项目 project_desc:bla bla project_category:第一个类别

我没有遇到麻烦,我很好奇实现它的最有效方法是什么。

选项1

$projects = $this->projects_model->find_all();
$categories = $this->category_model->find_all();

foreach($projects as $project){
   foreach($categories as $category){
      if($project->category_id == $category->id){
         $project->category = $category;
      }
   }
}

选项 2

$projects = $this->projects_model->find_all();

 foreach($projects as $project){
   $project->category = $this->category_model->find_by('id', $project->category_id);
 }

可能还有许多其他方法可以实现我想要的结果,并且可能在更有效的庄园中,如果这是我喜欢学习的情况。

4

2 回答 2

1
  1. 你应该自己分析这个,你会得到你的答案

  2. 访问数据库是昂贵的。访问数组数据不是。这意味着您将希望尽可能少地访问数据库。

于 2012-11-18T20:40:30.063 回答
0

假设您的 find_all 和 find_by 函数从数据库请求数据,选项 1 将更可取,直到搜索的类别和使用的类别之间的比率变低。SQL 上的顺序(即读取-然后-读取-下一行)读取操作比目标读取操作快得多。

但最终,如果我是你,我会更少担心实际的数组循环,而更多地担心如何获取数据,因为将是性能消耗的地方。

于 2012-11-18T20:41:57.593 回答