Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php CI数据映射器:迭代父-子_Php_Mysql_Codeigniter_Codeigniter Datamapper - Fatal编程技术网

Php CI数据映射器:迭代父-子

Php CI数据映射器:迭代父-子,php,mysql,codeigniter,codeigniter-datamapper,Php,Mysql,Codeigniter,Codeigniter Datamapper,我有类别和职位。 我想列出所有类别(家长),以及所有相关的职位(孩子)。如果没有嵌套集,则需要复杂的查询。建立了关系 正如我从文档中记得的: $categories = new Category(); foreach( $categories->get() as $category ) { echo $category->name; foreach( $category->post->get() as $post) { echo $po

我有类别和职位。 我想列出所有类别(家长),以及所有相关的职位(孩子)。如果没有嵌套集,则需要复杂的查询。建立了关系

正如我从文档中记得的:

$categories = new Category();

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

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

}
现在,如果我有1000个类别,它将对每个类别进行查询

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

  • 为帖子和类别创建两个查询,并使用php将它们合并到树中
  • 连接两个表、一个查询并使用php创建树
  • 某人的聪明想法:)

  • 我将创建一个专用的模型方法来检索所需的数据,并将其分批检索(用于分页)。在我开始使用一些示例代码之前,核心概念是您有两个表,通过内部JOIN语句链接,并且您可以批量限制选择。然后,您可以像通常在视图中一样显示数据

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

    • 身份证
    • 名字
    我们还假设您有一个post表,它看起来像这样:

    • 身份证
    • 名字
    • 类别识别码
    我现在基本上会检索您需要的条目,但也会限制我的结果

    $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();
    
    分页可以在需要显示大量数据时节省时间。但是,如果<强>必须同时显示所有数据>,请考虑使用MycCurp、Gelman或类似的缓存技术,以便您有更好的性能。