4

Codeigniter に移行しているニュース追跡 Web サイトを持っていますが、Codeigniter Active Record の使用で問題が発生しました。これを理解するのに十分な知識がありません。

古いコードでは、挿入を行い、挿入内で SELECT FROM を実行して、挿入内の 1 つのフィールドの値を取得します。

$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 に答える