Php 如何在Codeigniter的视图中使用两个表数据

Php 如何在Codeigniter的视图中使用两个表数据,php,mysql,codeigniter,codeigniter-2,Php,Mysql,Codeigniter,Codeigniter 2,我有两个表,第一个表是关于主题名,第二个表显示子主题。我想从第一个表中显示主题名,然后搜索相应的子主题,并在视图中显示,依此类推,直到在第一个表中找到主题名。但问题是我只能在视图中获取一个表数据,即主主题表。我不知道如何获得这两个表的完整数据并使用它 数据库结构: 型号: 控制器: 视图: $row->topic\u name 所需输出: 尝试此查询。我们做两个表的左连接 $CI->db->select('*'); $CI->db->from('topic')

我有两个表,第一个表是关于主题名,第二个表显示子主题。我想从第一个表中显示主题名,然后搜索相应的子主题,并在视图中显示,依此类推,直到在第一个表中找到主题名。但问题是我只能在视图中获取一个表数据,即主主题表。我不知道如何获得这两个表的完整数据并使用它

数据库结构:

型号:

控制器:


视图:


  • $row->topic\u name
  • 所需输出:


    尝试此查询。我们做两个表的左连接

    $CI->db->select('*');
    $CI->db->from('topic');
    $CI->db->join('sub-topics', 'topic.id = sub-topics.sub_topic_id', 'left');
    $query = $CI->db->get();
    $result =  $query->result(); 
    

    您将在您的模型中得到结果。从模型返回此结果并在控制器中访问它。在控制器中打印返回结果后,您将了解如何渲染它,因为您已经完成了上述操作。

    您的控制器是完美的,您的模型是完美的,只需更改视图:

    鉴于:

            foreach ($query as $row) 
            { ?>
            <ul>
                <li><?php echo $row['topic_name'];?>
                <ul>
                <?php $this->db->where('sub_topic_id',$row['id'])
                $r = $this->db->get('subtopics');
                if($r->num_rows()>0)
                {
                    foreach ($r -> result_array() as $row) {
                    $data1[] = $row;
                    }
                }
                foreach($data1 as $sub){?>
                //print <li><?php echo $sub['subtopic_name']?></li>
                <? }?>
              </ul>
            </li>
           <? }?>
          </ul>
    
    foreach($queryas$row)
    { ?>
    
      • //打印

    对于每个主题,获取子主题,存储在数组中,并在视图中循环。您是否尝试过
    mysql join
    ?我认为这不能通过join来完成。@Niranjan N N Raju您可以通过示例告诉我或给我一个链接吗?请检查此链接,确保您相应地更改了数据库列名,@user3653474请检查我是否已编辑回答。@DeepParekh,因为他有所有的结果。他可以通过索引数组来准备自定义数组,主题如下key@sandeepsure谢谢你的回答,但是它给出了不同的输出,我的主主题将被显示,而不管它是否有子主题。@Deep Parekh在我的模型中,我只从一个表中检索数据,所以我的模型如何和控制器是否正确缺少某些内容。@user3653474您需要循环遍历每个记录,并使用主题id为其编制索引。
     <?php
        foreach ($query as $row) {
     ?>
       <li>  $row->topic_name   </li>
     <? }  ?>
    
    $CI->db->select('*');
    $CI->db->from('topic');
    $CI->db->join('sub-topics', 'topic.id = sub-topics.sub_topic_id', 'left');
    $query = $CI->db->get();
    $result =  $query->result(); 
    
            foreach ($query as $row) 
            { ?>
            <ul>
                <li><?php echo $row['topic_name'];?>
                <ul>
                <?php $this->db->where('sub_topic_id',$row['id'])
                $r = $this->db->get('subtopics');
                if($r->num_rows()>0)
                {
                    foreach ($r -> result_array() as $row) {
                    $data1[] = $row;
                    }
                }
                foreach($data1 as $sub){?>
                //print <li><?php echo $sub['subtopic_name']?></li>
                <? }?>
              </ul>
            </li>
           <? }?>
          </ul>