Codeigniter Where或之前的查询

时间:2014-02-17 12:21:41

标签: php mysql codeigniter

我有以下查询:

$this->db->where('user_id', $this->session->userdata('user_id'));
$this->db->where('barcode != ""');
$codes = $this->db->get('acquisti')->result();
return $codes;

这会产生一个可以显示一条或多条记录的结果(varius字段),我需要告诉Codeigniter从另一个表中显示“条形码”是上面记录之一的结果。

我试过了:

$this->db->where('user_id', $this->session->userdata('user_id'));
$this->db->where('barcode != ""');
$codes = $this->db->get('acquisti')->result();

foreach ($codes as $key => $value) {
    $this->db->where('IRSC', $value->barcode);
    return $this->db->get('rendiconti_agosto')->result();
}

但即使$code实际上不止一个,这也只返回一个结果。

任何提示?

2 个答案:

答案 0 :(得分:3)

尝试在array中抓住它们,然后像​​

一样返回它们
foreach ($codes as $key => $value) {
    $this->db->where('IRSC', $value->barcode);
    $result_arr[] = $this->db->get('rendiconti_agosto')->result();
}
return $result_arr;

在你的代码中,你是第一次循环返回,所以循环将首先终止,然后只得到你得到的第一个结果。

答案 1 :(得分:0)

试试这个。你可以不用循环来做。

$this->db->select("*");
$this->db->from("acquisti a");
$this->db->join("rendiconti_agosto ra","ra.IRSC = a.barcode ");
$this->db->where('a.user_id', $this->session->userdata('user_id'));
$this->db->where('a.barcode <> ""');
$res = $this->db->get();    
return $res->result_array();