【问题标题】: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 活动记录的函数。