2012-02-13 51 views
4

这里是我想要做的是否有可能使用Codeigniter的活动记录更新JOINed表?

function edit_save($data, $post_id, $user_id) 
{ 
    $this->db->where('post.user_id', $user_id); 
    $this->db->where('post.post_id', $post_id); 
    $this->db->join('data', 'post.data_id_fk = data.data_id', 'left'); 
    $this->db->update('post', $data); 
} 

“后”表需要左加入了与“数据”是什么。

当我运行上面的时候,我得到一个SQL错误,指出'data'表中没有找到其中一个字段。

有什么建议吗?

更多信息

这是生成的SQL查询

UPDATE `post` 
SET `data_value` = '111', `data_date` = '2012-02-13', `post_text` = '111' 
WHERE `post_stream_id` = '5' 
    AND `post_id` = '18' 

这是错误

Unknown column 'data_value' in 'field list' 

它不显示的JOIN语句。

+0

有什么确切的错误信息?该列是否存在?它运行的是什么确切的SQL? – 2012-02-13 00:41:35

+0

亚伦,列存在 - 只是发布更多的代码 - 让我知道你认为 – pepe 2012-02-13 01:16:00

+1

合理的解决方案在这里 - http://stackoverflow.com/q/4830380/445142 – pepe 2012-02-13 02:01:51

回答

3

试试这个活动记录查询更新联接:

function edit_save($data, $post_id, $user_id) 
{ 
    $this->db->set($data) 
    $this->db->where('post.user_id', $user_id); 
    $this->db->where('post.post_id', $post_id); 
    $this->db->where('post.data_id_fk = data.data_id'); 
    $this->db->update('post, data'); 
} 
+1

我的解决方案是相同的,你提供的链接。所以,请接受这个答案。请参阅[此链接](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)了解如何接受答案。谢谢! – 2012-02-28 17:41:51

+1

我无法让您的更新线正常工作。它需要“as”SQL语法才能超越CodeIgniter的转义特性。 – 2013-06-01 05:41:38

相关问题