2016-09-26 32 views
0

我有這個模型函數下面讓我加入這兩個表。打印結果在問題底部。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

回答

0

你的方法的一種可能的解決辦法是:

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

0

示例爲您

$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);