【问题标题】:Codeigniter Active record: greater than statementCodeigniter 活动记录:大于语句
【发布时间】:2011-05-07 07:04:43
【问题描述】:

我正在尝试将“大于”where 语句转换为 CI 的 Active Record 语法。当我使用这个 sn-p

    $this->db->join('product_stocks', "product_stocks.size_id_fk = product_attributes.id", "left");
    $this->db->where('product_stocks.stock_level', '> 1');      
    $result = $this->db->get('product_attributes')->result_array();

然后打印 $this->db->last_query();显示WHEREproduct_stocks.stock_level= '> 1' 这当然是不正确的。这个可以吗?

【问题讨论】:

    标签: php activerecord codeigniter


    【解决方案1】:

    我认为这应该可以解决问题:

    $this->db->where('product_stocks.stock_level >', '1');  //moved the >
    

    【讨论】:

      【解决方案2】:

      要么

      $this->db->where('product_stocks.stock_level >', '1');
      $this->db->where(array('product_stocks.stock_level >'=>'1'));
      应该这样做。注意字段名称和运算符之间的空格;否则你最终会得到错误 1064。

      【讨论】:

        【解决方案3】:

        你也可以像这样将字符串参数传递给 where() 函数,

        $this->db->where('product_stocks.stock_level > 1');
        

        【讨论】:

          【解决方案4】:

          我希望在 CI 中有以下内容:

           $sQuery = "SELECT auftrag, saal, DATE_FORMAT(konzertdatum,'%e, %M, %Y') AS konzertdatum2 FROM auftrag 
              JOIN saal on auftrag.saal_id = saal.id 
              WHERE konzertdatum < NOW() + INTERVAL 240 DAY AND auftrag like '%$sWord%' order by konzertdatum asc LIMIT 4";
           $aOrder = $this->db->query($sQuery);
           $aOrder = $aOrder->result();
          

          没有 CI 也能正常工作,但是当我使用时

                $this->db->select("auftrag, saal, DATE_FORMAT(konzertdatum,'%e, %M, %Y') AS konzertdatum2", false );
              $this->db->from('auftrag');
              $this->db->join('saal', 'auftrag.saal_id = saal.id');
              $this->db->like('auftrag', $sWord);
              $this->db->where('konzertdatum <', 'NOW() + Interval 240 day');
          
              $this->db->order_by('konzertdatum');
              $this->db->limit(4);
          
              $oQuery = $this->db->get();
          
              $aOrder = $oQuery->result();
              print_r($this->db->last_query());
          

          它返回所有不关心位置的结果(虽然 sql 看起来不错):

          SELECT auftrag, saal, DATE_FORMAT(konzertdatum, '%e, %M, %Y') AS konzertdatum2 FROM (`auftrag`) JOIN `saal` ON `auftrag`.`saal_id` = `saal`.`id` WHERE `konzertdatum` < 'NOW() + Interval 240 day' AND `auftrag` LIKE '%spangenberg%' ORDER BY `konzertdatum` LIMIT 4 
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-03-23
            • 1970-01-01
            • 1970-01-01
            • 2014-02-22
            • 2014-01-30
            • 2014-10-19
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多