【问题标题】:Is it possible to UPDATE a JOINed table using Codeigniter's Active Record?是否可以使用 Codeigniter 的 Active Record 更新 JOINed 表?
【发布时间】:2012-03-04 11:30:54
【问题描述】:

这是我想做的事

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);
}

“post”表需要与“data”进行左连接。

当我运行上述程序时,我收到一条 SQL 错误,提示找不到“数据”表中的某个字段。

有什么建议吗?

更多信息

这是生成的 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 语句。

【问题讨论】:

  • 确切的错误信息是什么?列存在吗?它运行的确切 SQL 是什么?
  • aaron,该专栏存在 - 刚刚发布了更多代码 - 让我知道你的想法
  • 这里合理的解决方案 -- stackoverflow.com/q/4830380/445142

标签: php mysql codeigniter activerecord join


【解决方案1】:

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

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');
}

【讨论】:

  • 我的解决方案与您提供的链接相同。所以,请接受这个答案。请参阅this link 了解接受答案的工作原理。谢谢!
  • 我无法让您的更新线路正常工作。它需要“as”SQL 语法来通过 CodeIgniter 的转义功能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多