как зацикливаться ИЛИ ГДЕ в codeigniter согласно данным, выбранным на MULTISELECT - PullRequest
0 голосов
/ 18 декабря 2018

Я хочу создать функцию фильтрации данных, используя категорию MULTISELECT, где отображаемые данные соответствуют списку категорий, выбранных в фильтре.Итак, я планирую зациклить команду ИЛИ ГДЕ согласно списку категорий, выбранных пользователем.ИЛИ ГДЕ успешно завершено в соответствии с количеством выбранных категорий, но не для идентификатора.И покажите ошибку вроде этого «Преобразование массива в строку»

В чем причина и как ее решить?Спасибо


Мой контроллер

$sort = $this->input->post('sort');
$category = $this->input->post("get_kategori_acara_css[]");
$interest = $this->input->post("get_interest_acara_css[]");

/* eksekusi library pagination ke model penampilan data */
if (!empty($sort) || !empty ($category) || !empty ($interest))
{ 
  $this->data['list_acara'] = $this->Acara_model->get_filtered($sort, $category, $interest, $config['per_page'], $dari);
}
else 
{
  $this->data['list_acara'] = $this->Acara_model->get_all_arsip();
}

МОЯ МОДЕЛЬ

public function get_filtered ($sort, $category, $interest) {
$this->db->join('kategori', 'acara.id_kategori = kategori.id_kategori');
$this->db->join('interest_acara ', 'acara.id_acara  = interest_acara.id_acara', 'left');
$this->db->join('hits_acara  ', 'acara.judul_seo = hits_acara.judul_seo', 'left');
$this->db->where('publish','Ya');
$this->db->group_by('acara.judul_seo');
if(!empty($sort AND empty($category) AND empty($interest))) 
{
  $this->db->order_by($sort, $this->order);
}
elseif(!empty($sort) AND !empty($category) AND empty($interest)) 
{
  foreach ($category as $value) {
    $this->db->or_where('acara.id_kategori', $value->id_kategori);
  }
}
return $this->db->get($this->table)->result();
}

Отображаемая ошибка

Свойство Multiselect

1 Ответ

0 голосов
/ 18 декабря 2018

Проблема заключается в использовании $value->id_kategori в цикле foreach ($category as $value).

Переменная $value не является объектом, поэтому попытка получить значение свойства, т. Е. $value->id_kategori не приводит кsense.

$category - это простой индексированный массив значений, например

array('0'=>'123', '1'=>'456', '2'=>'789')

Я думаю, все, что вам нужно сделать, это изменить это

$this->db->or_where('acara.id_kategori', $value->id_kategori);

на это

$this->db->or_where('acara.id_kategori', $value);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...