2016-03-28 43 views
1

使用Codeigniter的活动记录CI2更新JOINed表的数据是否可行?我有运行代码,我想转换为Codeigniter的活动记录。如何使用Codeigniter的活动记录CI2更新JOINed表的数据?

public function update_table($job_id, $om_id, $recipient_id) 
{ 
    $query = "UPDATE table1 AS t1 
         INNER JOIN table2 AS t2 
           ON t1.om_id = t2.id 
       SET t2.read_date = NOW() 
       WHERE t2.ref_table_id = $job_id 
       AND t1.om_id = $om_id 
       AND t2.recipient_id = $recipient_id 
       AND t2.read_date = '0000-00-00 00:00:00'"; 

    $result = $this->db->query($query); 
    return $result; 
} 

我尝试这样,但不起作用。

public function update_table($job_id, $om_id, $recipient_id) 
{ 
    $this->db->set('t2.read_date', NOW()); 

    $this->db->where('t2.ref_table_id', $job_id); 
    $this->db->where('t1.om_id', $om_id); 
    $this->db->where('t2.recipient_id', $recipient_id); 
    $this->db->where('t2.read_date', '0000-00-00 00:00:00'); 
    $this->db->where('t2.om_id = t1.id'); 
    $this->db->update('table1 AS t1, table AS t2'); 

} 

任何帮助将不胜感激。由于

回答

0

你可以试试这个..

提供$条件为阵......同与你想更新数据。

function update_data($table, $data, $condition) 
{ 
    $this->db->where($condition); 
    $this->db->update($table, $data); 
} 
+0

我想这只是CI上的简单方法,我应该在哪里放置连接子句? –

+0

@VonnGarcia嗯,据我所知你只能在选择数据时使用'join'...你只是更新't2.read_date' ...所以基本上你只需要在where子句中't1.om_id'因为'om_id'已经是你的'table2上的外键了,为什么不直接在't2.om_id'上做'where子句'....你让自己很难... –

相关问题