我有类别和帖子。 我想列出所有类别(父母)和所有相关帖子(孩子)。没有嵌套集,复杂查询。建立了关系。
正如我在文档中记载的那样:
$categories = new Category();
foreach( $categories->get() as $category )
{
echo $category->name;
foreach( $category->post->get() as $post)
{
echo $post->title;
}
}
现在,如果我有千个类别,它将对每个类别进行查询。
这种情况下的最佳做法是什么?
答案 0 :(得分:1)
我会创建一个专用的模型方法来检索你想要的数据,然后我会批量检索它(用于分页)。在我使用一些示例代码进入想法之前,核心概念是您有两个表,您通过 INNER JOIN 语句链接,并且您批量限制您的选择。然后,您可以像在视图中一样显示数据。
假设你有一个类别表,它看起来像这样:
我们还说你有一个帖子表,看起来像这样:
我现在基本上会检索您需要的条目,但也会限制我的结果。
$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 或类似的缓存技术,以便获得更好的性能。