Codeigniter加入不显示组正确

Codeigniter加入不显示组正确

问题描述:

我有这个模型函数下面让我加入这两个表。打印结果在问题底部。Codeigniter加入不显示组正确

<?php 

class Forum_model extends CI_Model { 

    public function get_forums() { 
     $this->db->select('f.*, fc.*'); 
     $this->db->from('forum_category fc', 'left'); 
     $this->db->join('forum f', 'f.forum_id = fc.category_forum_id', 'left'); 
     $query = $this->db->get(); 

     if ($query->num_rows() > 0) { 
      return $query->result_array(); 
     } else { 
      return false; 
     } 
    } 
} 

如何以往当我去在看在我看来,它显示它像下面

像两个一般类别新闻休息室应该在一个面板上显示。出于某种原因,它在自己的面板中显示两个一般类别。

问题:如何将两个类别一起显示?我曾尝试$this->db->group_by('fc.category_forum_id')

图片

enter image description here

控制器

<?php 

class Home extends MY_Controller { 

    public function __construct() { 
     parent::__construct(); 
     $this->load->model('reports/thread_analytics_model'); 
     $this->load->model('forum/forum_model'); 
    } 

    public function index() { 

     $results = $this->forum_model->get_forums(); 

     echo "<pre>"; 

     print_r($results); 

     echo "</pre>"; 

     $data['forums'] = array(); 

     foreach ($results as $result) { 
      $data['forums'][] = array(
       'forum_name' => $result['forum_name'], 
       'category_name' => $result['category_name'] 
      ); 
     } 

     $data['content'] = 'common/home_view'; 

     $this->load->view('theme/default/template_view', $data); 
    } 
} 

查看

<?php foreach ($forums as $forum) {?> 
    <div class="panel panel-home"> 
     <div class="panel-heading"><h1 class="panel-title"><?php echo $forum['forum_name'];?></h1></div> 
     <div class="panel-body"> 
     <table class="table"> 
      <tbody> 
       <tr> 
        <td><?php echo $forum['category_name'];?></td> 
       </tr> 
      </tbody> 
     </table> 
     </div> 
    </div><!-- Panel --> 
<?php }?> 

打印结果图像

enter image description here

你的方法的一种可能的解决办法是:

class Forum_model extends CI_Model { 

    public function get_forums() { 

     $arrGroupedData = array(); 

     $this->db->select('f.*, fc.*'); 
     $this->db->from('forum_category fc'); 
     $this->db->join('forum f', 'f.forum_id = fc.category_forum_id', 'left'); 
     $query = $this->db->get(); 

     if ($query->num_rows() > 0) 
     { 
      foreach($query->result_array() AS $arrCategory) 
      { 
       $arrGroupedData[$arrCategory['forum_id']][] = $arrCategory; 
      } 
      return $arrGroupedData; 
     } else { 
      return false; 
     } 
    } 
} 

但在我看来 - 你应该分手了你的查询 1个查询来获取论坛和1查询以获得论坛中的所有类别

并将其粘在一起成为树形结构

+0

现在没有数据显示。 – user4419336

+0

我认为这是因为你现在有一个多维数组 - 当然你必须调整你的视图 - 只是在你的控制器中print_r结果,你明白我的意思 - 或者你的结果打印为空? – sintakonte

示例为您

$forums = array(); 
    $results = array(

     array(
      'forum_name' => 'general', 
      'category_name' => 'news1' 
     ), 
     array(
      'forum_name' => 'general', 
      'category_name' => 'news2' 
     ), 
     array(
      'forum_name' => 'latter', 
      'category_name' => 'news3' 
     ), 


    ); 

foreach ($results as $result) 
{ 
    if(in_array($result['forum_name'],$forums)) 
    { 
     $array = array($result['category_name']); 
     array_push($forums[$result['forum_name']],$array); 
    } 
    else 
    { 
     $forums[$result['forum_name']][] = array(
      'forum_name' => $result['forum_name'], 
      'category_name' => $result['category_name'] 
     ); 
    } 

} 

echo '<pre>'; 
print_r($forums);