2013-10-23 21 views
0

我有类别和帖子。 我想列出所有类别(父母)以及所有相关帖子(子女)。没有嵌套集合,复杂的查询。建立关系。CI Datamapper:迭代父亲子代码

正如我从文档rembember:

$categories = new Category(); 

foreach($categories->get() as $category) 
{ 
    echo $category->name; 

    foreach($category->post->get() as $post) 
    { 
     echo $post->title; 
    } 

} 

现在,如果我有一千类别,它会为每个类别查询。

这种情况下的最佳做法是什么?

  1. 创建两个查询帖子和类别,并将它们合并到一棵树与PHP?
  2. 加入两个表,一个查询并用php创建树?
  3. 别人的聪明的想法:)

回答

1

我将创建检索您想要的数据的专用模型的方法,并且我会分批进行检索(对于分页)。在我进入示例代码之前,我的想法是核心概念是您有两个表,您可以通过INNER JOIN声明进行链接,并且您可以批量限制您的选择。然后,您会像通常在视图中一样显示数据。

假设你有一个类别表看起来是这样的:

  • ID

我们还假设你有一个表看起来像这样:

  • ID
  • CATEGORY_ID

我现在基本检索您需要的项目,同时也限制了我的成绩。

$this->db->select('*'); 
$this->db->from('category'); 
$this->db->join('post', 'post.category_id = category.id', 'inner'); 
$this->db->limit($limit, $offset); 
$query = $this->db->get(); 

当您必须显示大量数据时,分页才能保存。但是如果你的必须一次显示所有数据,可以考虑使用Memcached,Gearman或者类似的缓存技术,让你有更好的表现。