CodeIgniter在SQL语句中丢弃JOIN子句(Active Record)

时间:2011-08-18 15:48:28

标签: codeigniter

我的一个CI模型中有以下功能:

function update_uu_feature($feature, $lang, $data) 
{
    $feature = str_replace('_', '-', $feature);
    $this->db->where('navigation', $feature);
    $this->db->where('language', $lang);
    $this->db->join('all_video_names', 'all_video_names.video_id = all_uu_features.video_id', 'inner');
    return $this->db->update('all_uu_features', $data);
} 

但是“加入”行被丢弃了。在分析器中,它输出:

UPDATE `all_uu_features` SET `page_title` = 'Laser', `title` = 'Test', `keywords` = 'Test', `description` = 'Test', `feature_text` = '<p>Test text</p>', `learn_more_about` = 'Test Text 2', `overview` = 'test', `copy` = 'test' WHERE `navigation` = 'laser-interface' AND `language` = 'en'

有人可以帮我解释语法吗?谢谢。大多数数据都在all_uu_features表中,但视频名称除外,该名称位于all_video_names表中。这两个连接在每个表的video_id列中。换句话说,上述语句中的所有列都在all_uu_features中,但视频名称除外。希望很清楚。

上面的SQL语句显示数据正在帖子中返回并由函数处理,它只是因为某些原因而不接受连接。

1 个答案:

答案 0 :(得分:0)

我非常喜欢CI的Active Record类不支持在update()操作中使用连接。当然,如果您查看代码(在DB_active_rec.php中),update()方法甚至不会查看已设置的任何连接

来自update():

$sql = $this->_update($this->_protect_identifiers($table, TRUE, NULL, FALSE), $this->ar_set, $this->ar_where, $this->ar_orderby, $this->ar_limit);