【问题标题】:CodeIgniter Query Builder bugCodeIgniter 查询生成器错误
【发布时间】:2019-02-07 07:26:30
【问题描述】:

我遇到了 CodeIgniter 查询生成器不规则行为的问题,并且想不出问题出在哪里。代码:

    $this->db->order_by('MT_SHORT_NAME', 'ASC');
    $this->db->order_by('ORD_CREATION_DATETIME', 'DESC');
    $query = $this->db->get_where($this->OrderViewTable, array('ORD_WORK_DATE >=' => $from, 'ORD_WORK_DATE <=' => $to));
    return $query->result_array();

生成这两个查询:

SELECT * FROM "UTC_ORDER_VIEW" WHERE "ORD_WORK_DATE" >= '2019-02-07' AND "ORD_WORK_DATE" <= '2019-02-07' ORDER BY "MT_SHORT_NAME" ASC, "ORD_CREATION_DATETIME" DESC
SELECT * FROM "UTC_ORDER_VIEW" WHERE "ORD_WORK_DATE" >= "=" '2019-02-07' AND "ORD_WORK_DATE" <= "=" '2019-02-07' ORDER BY "MT_SHORT_NAME" ASC, "ORD_CREATION_DATETIME" DESC

可以看出,第二个查询中有额外的“=”,这是不规则发生的。请帮忙

【问题讨论】:

    标签: php database oracle codeigniter orm


    【解决方案1】:

    这样试试

    另外,请使用与您在 DB 中的输入和值相匹配的正确日期格式

    $this->db->order_by('MT_SHORT_NAME', 'ASC');
    $this->db->order_by('ORD_CREATION_DATETIME', 'DESC');
    $this->db->where('ORD_WORK_DATE >=', date('Y-m-d', strtotime($first_date));
    $this->db->where('ORD_WORK_DATE <=', date('Y-m-d', strtotime($second_date));
    return $this->db->get($this->OrderViewTable)->result_array();
    

    【讨论】:

      【解决方案2】:
      $this->db->where('ORD_WORK_DATE >=', $first_date);
      $this->db->where('ORD_WORK_DATE <=', $second_date);
      return $this->db->get($this->OrderViewTable)->result_array();
      

      【讨论】:

      • 你能解释一下它背后的逻辑吗?它有什么变化?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-02
      • 1970-01-01
      • 2016-07-05
      • 1970-01-01
      • 2016-07-25
      • 1970-01-01
      相关资源
      最近更新 更多