2011-07-14 82 views
1

我想爲我的新聞報道頁面的嵌套查詢提供一些幫助 - 基本上我希望每篇文章都有相關的評論顯示在下面,但目前只對每篇文章返回一條評論:(從兩張桌子上拉取信息

function get_records($limit, $offset, $sort) { 
    $this->db->select('news.*, COUNT(comments.news_id) as comments, comments.comment as comment, news.id as id, news.created_on as created_on, CONCAT(users.firstname, " ", users.surname) as author, categories.category as category, news_types.type as news_type', FALSE); 
    $this->db->from('news', 'comments'); 
    $this->db->join('users', 'users.id = news.author', 'left'); 
    $this->db->join('comments', 'comments.news_id = news.id', 'left'); 
    $this->db->join('categories', 'categories.id = news.category', 'left'); 
    $this->db->join('news_types', 'news_types.id = news.news_type', 'left'); 
    $this->db->group_by('news.id'); 
    $this->db->order_by('news.id', 'DESC'); 
    $this->db->limit($limit, $offset); 
    $query = $this->db->get(); 
    if($query->num_rows() > 0) { 
     return $query->result_array(); 
    } 
} 

回答

3
$this->db->group_by('news.id'); 

GROUP BY將每則新聞只返回一個記錄到你,這就是爲什麼你只能得到一個評論。你需要有第二個查詢獲取所有的評論或刪除GROUP BY獲得所有與冗餘新聞項目信息的評論(這真的不是一個好主意)。

2

下面是你想要做的 - 理論上,不是代碼:

你會想製作一大堆新聞報道,數組中的一個項目是匹配註釋的另一個數組。

  1. 將所有新聞報道收集在一個查詢中。
  2. 循環播放新聞報道,並循環播放,運行另一個查詢,以抓取符合新聞故事的評論。
  3. 將註釋轉儲到數組中,並將該數組作爲對象屬性附加到result()項目,或者將result_array()附加爲每個數組的新項目。

然後從模型中將全新的數組/對象返回到控制器。

;)

相關問題