【问题标题】:CodeIgniter Active Record: Ignoring certain variablesCodeIgniter Active Record:忽略某些变量
【发布时间】:2012-08-12 11:23:44
【问题描述】:

我想使用 CodeIgniter 的 Active Record,到目前为止它运行良好。但是,我想将一些变量分配给我希望 CodeIgniter 在生成其 SQL 查询时可以忽略的对象。例如:

$this->Objs->Name = 'Eric';
$this->Objs->Age = 27;
$this->Objs->Gender = 'M';
$this->Objs->TempVal = 'This is just for reference purposes';

我在表中没有确切的名为TempVal 的对应列,所以如果我调用$this->Objs->save();(它实现了一个自我保存的基本方法),SQL 查询将包含TempVal ,这将引发错误。

有没有办法从 SQL 查询中排除TempVal

【问题讨论】:

  • 在保存之前看看这是否适合你unset($this->Objs->TempVal);
  • 嗯,我相信这会起作用,但我想在运行 SQL 查询后使用该变量...我真的需要制作某种字典来将它们全部链接起来吗?
  • 然后将它存储在一个变量中,然后 unset() 它并使用它,但是你打算使用它!我真的不明白你所说的链接。
  • 实际上我需要将这个特定的变量输出给用户,所以它必须在对象中:我将 json_encode() 整个对象数组放在它的末尾。我的意思是链接有点像跟踪索引,所以我可以在完成 SQL 后分配它...
  • mmm 为什么不存储在一个临时变量中,unset(),save(),然后将其设置回obj?或者,也许您将此信息保存在 Session 或 Cookie 中...

标签: sql codeigniter activerecord


【解决方案1】:

您可以子类化位于系统数据库中的CI_DB_active_record 类。并修改插入方法以忽略您不想保存的属性。

This 向您展示如何加载它。在/system/DB.php中加载您的子类需要稍作修改

只是为了记录,可能有更好的方法来完成你想要完成的事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    • 1970-01-01
    • 2011-10-17
    • 2013-02-18
    相关资源
    最近更新 更多