2017-03-28 64 views
1

我有兩個表笨連接兩個表顯示的類別名稱並列出所有項目

  1. 類別:

    • CAT_ID
    • cat_name
  2. 項目

    • items_it
    • ITEM_NAME
    • item_cat

我希望得到這樣的結果:

類別 - > cat_name1
- item_name1
- item_name2

類別 - > cat_name2
- item_name3
- item_name4

使用PHP,我會去像這樣的東西:

$query1 = 'SELECT *FROM Category'; 
foreach($query1 as $cat) { 
    $query2 = 'SELECT *FROM Items WHERE "item_cat" = $cat'; 

    echo $cat; 
    foreach($query2 as $item) { 
    echo $item; 
    } 
} 

,這是什麼使用CodeIgniter的最好的方法?

+0

是'item_cat'一樣'cat_id'?因爲你需要在這兩個表中有一個相同的列才能夠加入它們。我認爲你在兩個表中都有相同的名稱用於相同的列,這樣會更容易理解代碼:) –

+0

是的,這是相同。我可以加入表格,但我想回顯此類別中的第一類別和所有項目,而不是第二類別和第二類別中的所有項目 – Pecooou

+0

並且您想要在列表中回顯數據? –

回答

0

這裏是笨的簡單例子與架構:

<?php 
$this->db->select('*');  // select all columns 
$this->db->from('Category'); // FROM table 
$this->db->join('Items', 'Items.item_cat = Category.cat_id'); // INNER JOIN 
$query = $this->db->get(); // GET RESULT 
?> 

爲了得到結果,你可以使用兩種方法,要麼想在物體形式或陣列的數據。

陣列,使用result_array()方法,如:

$result = $query->result_array(); 
echo "<pre>"; 
print_r($result); // will print all data in array 

在對象,使用result()方法,如:

$result = $query->result(); 
echo "<pre>"; 
print_r($result); // will print all data in object 

現在,您可以進行排序,只要你想:

$newArray = array(); 
foreach ($result as $key => $value) { 
    $newArray[$value['cat_name']][] = $value; // sort as per category name 
} 
print_r($newArray); // will print all data against each category. 

現在打印您所需的結果爲:

foreach ($newArray as $key => $value) { 
    echo $key."<br/>"; // print Category Name 
    foreach ($value as $final_value) { 
     echo $final_value['item_name']."<br/>"; // print all items against category 
    } 
} 

Query Builder Class探索的文檔,這將幫助你更瞭解,你怎麼能利用INNERLEFT加入CI。

+0

是的,使用JOIN表,但在這種情況下,我如何迴應第一類,然後在這個類別中的所有項目? – Pecooou

+0

@Pecooou,只是'print_r($ query)'將返回所有的故事。 – devpro

+1

謝謝隊友,聯想陣列是解決方案 – Pecooou

0

使用連接:

$this->db->select(*); 
$this->db->join('items as i', 'i.item_cat = c.cat_id'); 
$query = $this->db->get('category as c'); 

foreach($query->result() as $result){ 
    echo $result->cat_name; 
    echo $result->item_name; 
} 
+0

在這種情況下,我會得到:category1 item1 category1 item2我需要的是category1只對該類別中的所有項目回顯一次 – Pecooou

相關問題