我的一个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语句显示数据正在帖子中返回并由函数处理,它只是因为某些原因而不接受连接。
答案 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);