我有一个新闻跟踪网站,我们已经迁移到Codeigniter,我遇到了使用Codeigniter Active Record的问题 - 我没有足够的知识来解决这个问题。
在旧代码中 - 我们执行插入操作并在插入内部执行SELECT FROM以获取插入中一个字段的值
$this->db->query("INSERT INTO news_item_keywords_link (news_item_keyword, keyword)
SELECT $version_id, keyword FROM news_item_keywords_link WHERE news_item_keyword=$old_version
我曾尝试使用Active Record执行此操作,但我无法弄清楚如何执行此操作,或者您可能无法使用Active Record执行此操作。
我尝试了一些方法,我的问题是如何在带有Active Record的INSERT语句中进行内联FROM。我试过这种方式,它没有工作得到语法错误,任何建议。
if ($this->db->insert('news_item_keywords', Array(
'news_item_keyword' => $version_id,
'keyword' => $this-db->select('keyword')
->from('news_item_keywords')
->where('news_item_keyword', $old_version);
))) {
我应该安装ORM库来扩展功能吗? 如果是这样,建议使用什么ORM库?
答案 0 :(得分:0)
第一件事是在控制器中加载模型......
型号:
function add($data){
$this->insert("tablename",$data);
}
function select_keyword($oldversion){
$this->db->select("keyword");
$this->db->where("news_item_keywords",$oldversion);
$this->db->get("news_item_keywords");
}
控制器:
function create(){
$data = array('news_item_keyword' => $version_id,
'news_item_keywords' => $this->modelname->select_keyword("oldversion")
);
$this->modelname->insert($data);//successful!
}