У меня есть следующий запрос Active Record.
//Example 1 public function info($school, $class, $student, $keyword) { $this->db->where('school.id', $school); $this->db->where('class.id', $class); $this->db->where('student.id', $student); $this->db->or_where('school.description', $keyword); $this->db->or_where('class.description', $keyword); $this->db->or_where('student.description', $keyword); return $this->db->get('info')->result(); }
Я хочу сгруппировать нижние три слова «or_where», чтобы они включались в верхние 3 «где». Решение, которое я придумал, было …
//Example 2 public function info($school, $class, $student, $keyword) { $this->db->where('school.description', $keyword); $this->db->where('school.id', $school); $this->db->where('class.id', $class); $this->db->where('student.id', $student); $this->db->or_where('class.description', $keyword); $this->db->where('school.id', $school); $this->db->where('class.id', $class); $this->db->where('student.id', $student); $this->db->or_where('student.description', $keyword); $this->db->where('school.id', $school); $this->db->where('class.id', $class); $this->db->where('student.id', $student); return $this->db->get('info')->result(); }
Это прекрасно работает, но есть ли способ сделать это без повторения кода?
Я нашел решение!
public function info($school, $class, $student, $keyword) { $this->db->where('school.id', $school); $this->db->where('class.id', $class); $this->db->where('student.id', $student); $this->db->where("(school.description LIKE '$keywords' OR class.description LIKE '$keywords' OR student.description LIKE '$keywords')"); return $this->db->get('info')->result(); }
Я просто наткнулся на это и хочу добавить следующее решение, в котором используется активная запись CI $this->db->like()
:
public function info($school, $class, $student, $keyword) { $this->db->where('school.id', $school); $this->db->where('class.id', $class); $this->db->where('student.id', $student); $this->db->like('school.description', $keyword); $this->db->or_like('class.description', $keyword); $this->db->or_like('student.description', $keyword); return $this->db->get('info')->result(); }