2012-10-20 81 views
0

我有一個表tbparent_module,tbsub_module和結表稱爲tbmodule_pairing其中它包含的2代表的ID(tbparent_module,tbsub_module)1查詢依賴於另一個查詢笨

在我的控制器I稱爲模式,將查詢所有父模塊並將其顯示在視圖上。我已經這樣做了,但我的問題是,我需要顯示其子模塊。

輸出

Parent Module 1 
    Sub Mod 1 
    Sub Mod 2 
    Sub Mod 3 

Parent Module 2 
    Sub Mod 1 
    Sub Mod 2 
    Sub Mod 3 

Parent Module 3 
    Sub Mod 1 
    Sub Mod 2 
    Sub Mod 3 

的例子這是我的代碼截至目前

視圖

foreach($module as $result){ 
     $sql = mysql_query("SELECT * FROM `tbsub_module` where parent_id='$result->id'"); 
     while($row=mysql_fetch_array($sql)){ 
     echo $row['subcateg_name']; 
     } 
} 

我知道這是不對的。但這是我知道解決我的問題的唯一方法。我想遵循MVC規則,我也想使用CodeIgniter的庫

回答

0

轉至此CI文檔http://codeigniter.com/user_guide/database/index.html CI中有所有DB方法可用。

這裏也許是工作(未測試)的方式做您的查詢..

$query = $this->db->get('modules'); ## SELECTIN all records from modules table 
foreach ($query->result() as $row) 
{ 
    $query2 = $this->db->get_where('tbsub_module', array('parent_id' => $row->id)); 
     foreach ($query2->result() as $row2) 
     { 
      echo $row2->subcateg_name; 
     } 
} 
+0

如果您想使用CI DB活動記錄來選擇數據,請查看http://codeigniter.com/user_guide/database/active_record.html#select (查詢的所有方法都帶有示例 - select,where,訂單,限制,等等..) – Svetoslav

+0

謝謝!其實我知道如何使用CodeIgniter的活動記錄和數據庫庫。但我的問題是,我無法弄清楚我的問題的邏輯。 我發佈的代碼來自我的查看頁面,實際上我不想在那裏查詢。但我不知道如何檢索我的記錄,其中查詢取決於其他結果。 正如你所看到的,它位於foreach循環的內部。 $結果由控制器生成。 感謝的方式 –

+0

CI的答覆是MVC框架.. http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller 所有查詢必須在模型,Controller從Model獲取數據並將其提供給您的視圖文件。 – Svetoslav

0

您只需將數據傳遞給從控制器的看法。你基本上打破了MVC的全部想法。查詢應該在模型中,然後由控制器調用,然後傳遞給視圖。我不會解決查詢(很累......),但這基本上是你想要的。

控制器:

function whateverTheViewIs() 
{ 
    $this->load->model('categories'); 
    $data['subCatName'] = $this->categories->getSubcats(); 
    $this->load->view('viewName',$data); 
} 

型號類別:

function getSubCats() 
{ 
    run your query here, return array of whatever data you need. 
} 

的viewName:

foreach($subCat as $subcateg) 
{ 
    echo $subcateg['subcateg_name']; 
} 

,如果你需要的模塊,那麼也可以將其加載到另一個$數據[ '什麼' ]數組,並以相同的方式傳遞它。