2012-08-27 73 views
0

我需要帮助编写codeigniter的数据库模型。我有两张桌子。首先,我保存了所有产品,并在第二个表格中填写了产品的ID和ID。因此,举例来说:模型结构

产品

t-shirt with ID 1 
polo shirt with ID 2 

类别

shirts with ID 5 

protucts_cat

protuct_id category_id 
---------- ----------- 
1  5 
2  5

如何使用表格protucts_cat获取所有产品及其信息,并通过->result()获取?

回答

1

我倾向于写复杂的查询,而AR,但你可以用AR做到这一点:

return $this->db->query(' 
    SELECT 
     products.id AS product_id, 
     products.name AS product_name, 
     categories.id AS category_id, 
     categories.name AS category_name 
    FROM 
     products_cat 

    LEFT JOIN 
      products 
     ON 
      products.id = products_cat.product_id 

    LEFT JOIN 
      categories 
     ON 
      categories.id = products_cat.category_id 

    WHERE categories.id = '.$category_id.' 
')->result(); 
+0

对不起,我忘了写我只想从一个类别中选择产品,例如:http://example.com/category/5/我想只选择表中具有id为5的category_id的产品protucts_cat – Geril

+0

@Ger il加上我的回答的地方声明 –

+0

是的,它的工作原理谢谢:) – Geril

1

假设每一件产品都映射到一个类别我会做使用活动记录一个简单连接:

$this->db->select('product.id as product_id, product.name as name, categories.name') 
$this->db->from('product p'); 
$this->db->join('protucts_cat pc','pc.product_id = p.id'); 
$this->db->join('categories c','c.id = pc.id'); 
$query = $this->db->get(); 

if($query->num_rows){ 
return $query->result(); 
} 
return false; 
+0

这样做的工作? @Geril –

+1

雅,工作很好,非常感谢:) – Geril