2011-04-12 89 views
0

我想从表1 检索数据,我不得不从另一个表表2与意见表1的外键和显示检索数据。这怎么可能?codeigniter数据检索问题?

我的控制器:

$data['products'] = $this->MProducts->getProducts($customer_id); 
     foreach($data['products'] as $product){ 
      $cat_id = $product['category_id']; 
      $data['category_name'] = $this->MCats->getCategoryById($cat_id); 
     } 

我的看法是:

foreach ($products as $list){ 
     echo "<tr valign='top'>\n"; 
     echo "<td align='center'>".$list['name']."</td>\n"; 

     echo "<td align='center'>".$category_name."</td>\n"; 
     echo "<td align='center'>"; 
     echo $list['status']; 
     echo "</td>\n"; 

     echo "<td align='center'>".$list['marked_price']."</td>\n"; 
     echo "<td align='center'>".$list['discount_percent']."</td>\n"; 
     echo "<td align='center'>"; 
     echo anchor('products/partner/edit/'.$list['id'],'edit'); 
     echo " | "; 
     echo anchor('products/partner/delete/'.$list['id'],'delete'); 
     echo "</td>\n"; 
     echo "</tr>\n"; 

$ CATEGORY_NAME它给人类的所有行中的最后一个值。

回答

1

您应该阅读有关连接here

但是,你会做这样的事情:

$this->db->select('products.*, category.category_name'); 
$this->db->join('products', 'category.category_id = products.category_id'); 
$this->db->where('products.customer_id', $customer_id); // i guessed this part 
$this->db->get('products'); 

//编辑:还你在你的循环中的错误。它应该是这样的:

foreach($data['products'] as $key=>$product){ 
    $cat_id = $product['category_id']; 
    $data['products'][$key]['category_name'] = $this->MCats->getCategoryById($cat_id); 
} 

然后应该每个产品的在您的视图类使用:

echo "<td align='center'>".$list['category_name']."</td>\n";