Codeigniter Active Record 类插入

Posted

技术标签:

【中文标题】Codeigniter Active Record 类插入【英文标题】:Codeigniter Active Record Class Insert from 【发布时间】:2013-02-18 13:32:53 【问题描述】:

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

【问题讨论】:

标准sql查询有问题吗?好多了,活动记录只是一个查询生成器,结果是一样的 你的代码很混乱 【参考方案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!


【讨论】:

以上是关于Codeigniter Active Record 类插入的主要内容,如果未能解决你的问题,请参考以下文章

Codeigniter Active Record 类插入

使用 CodeIgniter Active Record 语句

CodeIgniter Active Record 与常规查询

CodeIgniter Active Record 中的 SQL 注释?

动态 Active Record 查询中的 Codeigniter 括号

Where 子句 CodeIgniter 中的 Active Record 问题