我想使用MULTISELECT类别创建数据过滤器功能,其中显示的数据与在过滤器上选择的类别列表一致。因此,我计划根据用户选择的类别列表循环执行OR WHERE命令。 OR WHERE已根据选择的类别数量成功循环,但未针对ID进行循环。并显示诸如“数组到字符串转换”之类的错误
原因是什么,解决方案是什么?谢谢
$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();
}
答案 0 :(得分:0)
问题是在$value->id_kategori
循环中使用foreach ($category as $value)
。
变量$value
不是对象,因此尝试获取属性的值,即$value->id_kategori
毫无意义。
$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);