#codeigniter
#codeigniter
Вопрос:
$this-> db-> or_where($where); это не работает.. он не возвращает значение.. но когда я удаляю инструкции or_like (), он работает нормально.. не может or_where работать вместе с or_like? помогите, пожалуйста..
public function search(){
$capacity1 = $this->input->post('capacity1');
$capacity2 = $this->input->post('capacity2');
$capacity3 = $this->input->post('capacity3');
$capacity4 = $this->input->post('capacity4');
$gender = $this->input->post('gender');
$establishment_type = $this->input->post('type');
$price = $this->input->post('price');
$cprice = intval($price);
if($price == "1499"){
echo "1499";
$where = "price < 1500";
$this->db->or_where($where);
}
$this->db->or_like('capacity', $capacity1);
$this->db->or_like('capacity', $capacity2);
$this->db->or_like('capacity', $capacity3);
$this->db->or_like('capacity', $capacity4);
$this->db->or_like('type', $establishment_type);
$this->db->or_like('gender', $gender);
$query = $this->db->get('establishment');
return $query->result_array();
}
Комментарии:
1. для функции or_where требуется 2 параметра, подобных этому; $this-> db->or_where(‘цена <‘, 1500);
2. or_where по-прежнему не работает с or_like, но затем я удаляю инструкции or_like.. он работает нормально.
Ответ №1:
используйте where()
вместо or_where()
. Тогда ваш код выдаст что-то вроде:
« WHERE price < 1500 or capacity LIKE '%yourcapacity'
….и т.д.»
Ответ №2:
Я получил этот ответ..
if (count($this->ar_like) > 0)
{
if (count($this->ar_where) == 0)
{
$this->ar_like[0] = str_replace(array('OR','AND'),'',$this->ar_like[0]);
}
$sql .= implode("n", $this->ar_like);
}
для получения более подробной информации посетите эту тему
https://ellislab.com/forums/viewthread/99235/#501303