2012-11-20 172 views
1

我有一些產品和一些圖像。有更多的圖像,他們有一個p_id。我如何獲得多個?這是一個畫廊。 我的當前查詢:CodeIgniter - 一對多數據庫關係

$this->db->select('prod_id, prod_name, prod_link, prod_description, prod_status, prod_price, brand_link, link, cat_link, normal, thumbnail'); 

    $this->db->from('product'); 
    $this->db->join('category', 'cat_id = prod_category'); 
    $this->db->join('brands', 'brand_id = prod_brand'); 
    $this->db->join('images', 'p_id = prod_id'); 

    $query = $this->db->get(); 

    return $query->row_array(); 

這只是給我的第一個圖像與其餘的信息一起。如果我將它改爲result_array(),它會給我第二個,但在另一個數組中。 (以及產品的其他結果,這是沒有意義的)

我真的很希望有人可以提供幫助。這是非常迫切:(

+0

作爲據我所知,使用Codeigniters活動記錄庫無法做到這一點,其他人使用'$ this-> db-> query(「SELECT ...」)寫出所需的SQL語句;'。第二次點擊數據庫以獲取每個產品的圖像陣列 – Jeemusu

+0

是的,刪除我的回答我沒有看到問題的權利,我以爲你是從圖像表中選擇的 –

+0

確切的,我真正想要的是在我的產品中包含圖像陣列唉。 – user1454771

回答

1

正如我上面提到的,你可以打數據庫中的第二次得到的圖像陣列該產品,然後添加這些結果返回到原始查詢數組。

$this->db->select('prod_id, prod_name, prod_link, prod_description, prod_status, prod_price, brand_link, link, cat_link, normal'); 
$this->db->join('category', 'cat_id = prod_category'); 
$this->db->join('brands', 'brand_id = prod_brand'); 
$query = $this->db->get('product')->result_array(); 

// Loop through the products array 
foreach($query as $i=>$product) { 

    // Get an array of products images 
    // Assuming 'p_id' is the foreign_key in the images table 
    $this->db->where('p_id', $product['prod_id']); 
    $images_query = $this->db->get('images')->result_array(); 

    // Add the images array to the array entry for this product 
    $query[$i]['images'] = images_query; 

} 
return $query; 
+0

謝謝!這工作完美的一點點修改! – user1454771