Intereting Posts
Внешний ключ для нескольких таблиц Раскрасьте изображение PNG с помощью PHP GD Как напечатать значение, выбранное в раскрывающемся списке на PHP, или установить его как выбранное? Параметр функции со странным поведением кодировки в PHP Запуск массива раз в несколько раз Медленное обновление зависимостей композитора, несмотря на флаг -prefer-dist Присвоение нескольких переменных одному элементу PHP Получение всех данных в одном запросе и обработке в PHP и повторение запросов для каждой части данных как использовать Pear Text_wiki Передача информации по кредитной карте через AJAX Как получить миниатюру из базы данных wordpress на внешнюю страницу Symfony security возвращает 401 ответ вместо перенаправления Что такое PHP-оператор% и как его использовать в реальных примерах? Laravel 5: Как разбивать Ajax-ответ GD! Преобразование png-изображения в jpeg и создание альфы по умолчанию белого цвета, а не черного

CodeIgniter Active Record несколько операторов «где» и «или»

У меня есть следующий запрос 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(); }