Я пытаюсь запросить свою базу данных, используя класс активной записи CodeIgniter. У меня есть несколько сообщений в блогах, хранящихся в таблице. Запрос предназначен для функции поиска, которая выведет все сообщения, которым назначены определенные категории. Таким образом, столбец «категория» таблицы будет иметь список всех категорий для этого сообщения в произвольном порядке, разделенных запятыми, например: политика, история, социология. и т.п.
Если пользователь выбирает, скажем, «Политика» и «История», должны быть возвращены заголовки всех сообщений, которые имеют ОБЕ эти категории.
Итак, список запрашиваемых категорий будет массивом $cats. Я думал, что это сработает -
foreach ($cats as $cat){
$this->db->like('categories',$cat);
}
Произведя это:
$this->db->like ('categories','Politics');
$this->db->like ('categories','History');
(Что даст: «ГДЕ категории КАК «%Политика%» И категории КАК «%История%»)
Но это не работает, похоже, выдает только первое утверждение. Я предполагаю, что проблема заключается в том, что имя столбца одинаково для каждого из связанных запросов. Похоже, в руководстве пользователя CI ничего об этом нет (http://codeigniter.com/user_guide/database/active_record.html), поскольку они, кажется, предполагают, что каждый связанный оператор будет для другого имени столбца.
Конечно, невозможно использовать ассоциативный массив в одном выражении, так как он должен содержать повторяющиеся ключи — в этом случае каждый ключ должен быть «категорией»...