2013-05-31 59 views
1

我有三個表標準化,分類清單和代碼點火器

文章 enter image description here

類別

enter image description here

和關係表articles_categories

enter image description here

該表是我存放我這樣使用正常化關係features.Like這 enter image description here

我能夠做的選擇,插入,更新,刪除。這裏是我以前的問題 Insert , Update , Delete -> Normalization & Code Igniter Saving articles and related categories according to normalization

什麼我想現在實現的是我試圖通過類來創建文章的列表。像這樣

Category Name 
- article relating to that category 
- article relating to that category 
- article relating to that category 
- article relating to that category 

這是我的控制器

function category($id) 
     { 
      $data['title'] = "View by category"; 
      $data['articles_categories']=$this->articles_categories_model->get_by_id($id); 
      $data['articles']=$this->articles_model->get(); 
      $data['category_id']=$id; 

      $data['categories_list']=$this->categories_model->get();  
      $this->load->view('articles_pages/category',$data);  
     } 

我的觀點

<?php 
    //$category_id; 
    foreach($articles as $a) 
    { 
     foreach($articles_categories as $ac) 
     { 
      if($ac['categories_id']==$category_id && $a['id']==$ac['articles_id']) 
      { 
       echo $a['title']; 
      } 
     } 
    } 
?> 

我不能讓慾望的結果。請幫幫我。謝謝

+0

在同一頁面上是否顯示多個類別? – Jeemusu

+0

單個類別 - >代表該類別的項目 –

回答

2

由於類別方法採用$id作爲參數,我假設您只想顯示單個類別的文章。

您目前正在返回您不想要的數據,然後在您的視圖中將其過濾出來。這是效率低下的(並且隨着文章數量的增加可能會成爲問題),而且這不是MVC編程的正確方法。我們應該專注於在模型中獲取正確的數據並將其傳遞給視圖,而不是返回每篇文章,然後過濾數據。

控制器:

function category($id) 
{ 
    $data['title'] = "View by category"; 
    $data['articles'] = $this->articles_model->get_articles_by_category(id); 
    $data['category_id']=$id; 

    $data['categories_list']=$this->categories_model->get();  
    $this->load->view('articles_pages/category',$data);  
} 

型號:

function get_articles_by_category($id) 
{ 
    $this->db->select('*'); 
    $this->db->from('articles'); 
    $this->db->join('articles_categories', 'articles.id = articles_categories.articles_id'); 
    $this->db->where('articles_categories.categories_id', $id); 
    $query = $this->db->get(); 

    return $query; 
} 

在上面我們加入的物品表,用articles_categories表,使我們能夠從一個特定的類別獲得的文章。以上只是使用活動記錄類的一個示例,但可以隨意將其重寫爲適合您的任何風格。

+0

對不起,這將是我的不好,我有模板文件,如側邊欄,頁眉,頁腳。謝謝Jeemusu。我會嘗試你的,儘快回覆你。 –

+0

您的解決方案適用於Jeemusu。謝謝 –