【问题标题】:Database class object数据库类对象
【发布时间】:2013-01-30 20:08:58
【问题描述】:

我看到人们使用这段代码,我试图了解它的作用,因为我在任何 codeigniter 文档或数据库类的源代码中都没有看到它。

$this->db->ar_orderby

【问题讨论】:

  • 添加一些上下文肯定会有所帮助
  • 据我的菜鸟告诉我,$this 是一个特殊变量,用于引用一个类,-> 在这种情况下表示某种获取/使用,我认为db 实际上是一个保存数据库资源的变量,作为一个变量被声明为$db,但如果你使用$this->,你就不能使用$符号...我昨天开始学习OOP,仅此而已我知道:)
  • db 可能在构造函数中被实例化。 $this->db 会在该类的任何函数中为您提供该 db 实例。
  • 经过一番搜索,我相当确信 ar_orderby() 是一个已弃用的函数。你应该使用 $this->db->order_by();

标签: php codeigniter


【解决方案1】:

这是一个按列保存顺序的数组..

应该没有理由直接使用这个属性。而是调用$this->db->order_by('column'),它会自动附加到数组中。

  • 定义在system/database/DB_active_rec.php第42行
  • 附加到方法CI_DB_active_record::order_by第856行
  • 用于在CI_DB_active_record::_compile_select第1781行生成SQL

【讨论】:

    【解决方案2】:
    【解决方案3】:

    以下面的方式使用它仍然有意义 -

    if (!count($this->db->ar_orderby)) {
        $this->db->order_by($this->order_by );
    }
    

    这基本上意味着 - 如果在调用此方法时 db 库尚未设置订单,请使用它。防止两次调用“order by”。

    【讨论】:

      【解决方案4】:

      您可以替换这些行:

      if (!count($this->db->ar_orderby)) {
          $this->db->order_by($this->order_by );
      }
      

      与:

      if(!count($this->db->order_by($this->order_by))) {
          $this->db->order_by($this->order_by);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-13
        • 1970-01-01
        • 1970-01-01
        • 2010-10-19
        • 1970-01-01
        • 2011-04-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多