4

我有一个新闻跟踪网站,我们已经迁移到 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 库?

4

1 回答 1

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!

}
于 2013-11-26T07:58:13.950 回答