【问题标题】:How to convert RIGHT LEFT functions to codeigniter active record如何将 RIGHT LEFT 函数转换为 codeigniter 活动记录
【发布时间】:2015-09-07 12:05:03
【问题描述】:

我有一个这样的查询:

SELECT RIGHT(id, 1) id_root
FROM  user 
WHERE LENGTH(id) = 3
and LEFT(id, 1) = '0'

以及如何将查询转换为codeigniter 中的活动记录。

我的问题在于语法RIGHT( id, 1 )LEFT(id,1)='0'

【问题讨论】:

    标签: mysql sql codeigniter activerecord


    【解决方案1】:
    $query = "SELECT RIGHT(id, 1) id_root
              FROM  user 
              WHERE LENGTH(id) = 3
              and LEFT(id, 1) = '0'";
    $result = $this->db->query($query);
    

    【讨论】:

      【解决方案2】:
          $result_arr = $this->db
              ->select("RIGHT(id, 1) id_root", FALSE)
              ->from("user")
              ->where(
                      array("LENGTH(id)"=> 3, "LEFT(id, 1) =" => 0)
              )->get()
              ->result_array();
      

      或者你可以简单地使用$this->db->query("You SQL");

      $query = "SELECT RIGHT(id, 1) id_root
                FROM  user 
                WHERE LENGTH(id) = ?
                and LEFT(id, 1) = ? ";
      $result_arr = $this->db->query($query, array(3, 0))->result_array();
      

      【讨论】:

        【解决方案3】:

        您可以像这样生成查询

        $this->db->from('user');
        $this->db->select('RIGHT(id, 1) id_root',false);
        $this->db->where('LENGTH(id)',3,true);
        $this->db->where('LEFT(id, 1) =','0',true);
        $results=$this->db->get()->result();
        

        请记住,如果您想在您的选择查询中使用 mysql 函数,这可能会破坏 mysql 语法,codeigniter 使用 false 作为第二个参数,这样 codeigniter 就不会保护/隐藏您的字段。

        where 相同,如果你想使用 mysql 函数或其他可能通过 CI 破坏 mysql 语法的函数,请使用第三个参数为 true,以便 codeigniter 不会转换你的字段。

        详情请见documentation

        使用$this->db->query('YOUR_QUERY') 获取任何查询结果的最简单方法但我更喜欢使用 CI 活动记录的函数。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-07-11
          • 2015-07-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多