我想将当前的MySQL查询更改为Active Record。
SELECT * FROM search_result
WHERE experience
LIKE 'hello%' OR
bio LIKE 'hello%' OR
FIND_IN_SET('3D Design',skills);
我尝试了以下查询,但显示输出错误。
$this->db->from('search_result');
if($keyword){
$this->db->like('experience', $keyword);
$this->db->or_like('bio', $keyword);
}elseif($s_id){
$this->db->where("FIND_IN_SET('$s_id[0]', skills) != ", 0);
for($x=1; $x < count($s_id); $x++) {
$this->db->or_where("FIND_IN_SET('$s_id[$x]', skills) != ", 0);
}
}
............
$query = $this->db->get();
return $query->result_array();
答案 0 :(得分:0)
你的意思是
$this->db->from('search_result');
$this->db->where("experience LIKE 'hello%'
OR bio LIKE 'hello%'
OR FIND_IN_SET('3D Design',skills)");
答案 1 :(得分:0)
我可以看到两个错误,
在原始查询中,您只有在搜索字词后面有通配符%
,因此您的有效记录查询应为
$this->db->like('experience', $keyword, 'after');
$this->db->or_like('bio', $keyword, 'after');
在elseif
中,有一组OR
条件,您可以在活动记录中执行此操作,例如
$this->db->group_start();
$this->db->where("FIND_IN_SET('$s_id[0]', skills)"); // no need to compare to 0
for($x=1; $x < count($s_id); $x++) {
$this->db->or_where("FIND_IN_SET('$s_id[$x]', skills)");
$this->db->group_end();