0

我有类别和帖子。我想列出所有类别(父)和所有相关帖子(子)。没有嵌套集,复杂的查询。建立了关系。

正如我从文档中记住的那样:

$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. 某人的聪明主意:)
4

1 回答 1

1

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

假设您有一个如下所示的类别表:

  • ID
  • 姓名

我们还假设您有一个如下所示的post表:

  • ID
  • 姓名
  • 类别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();

当您必须显示大量数据时,分页可以节省您的时间。但是,如果您必须一次显示所有数据,请考虑使用MemcachedGearman或类似的缓存技术,以便您拥有更好的性能。

于 2013-10-23T14:05:07.607 回答