2013-03-04 68 views
4

我有一個新聞跟蹤網站,我們已經移植到Codeigniter,我遇到了使用Codeigniter Active Record的問題 - 我沒有足夠的知識來解決這個問題。Codeigniter Active Record Class插入從

在舊的代碼 - 我們的插件和插件之內,我們做一個選擇,以獲得值一個字段中插入

$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來做。

我已經嘗試了幾件事,我的問題你如何在INSERT語句中使用Active Record執行inline 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庫?

+1

有與標準的SQL查詢的問題嗎?它好得多,主動記錄只是一個查詢生成器,結果是一樣的 – tomexsans 2013-03-04 12:48:57

+0

你的代碼令人困惑 – Denmark 2013-11-26 07:54:17

回答

0

1日的事情加載控制器模型...

型號:

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! 

}