Допустим, у меня есть модель в CI, возвращающая то, что нужно пользователям.
$find = 'something';
$id_user = Array ( [0] => 1 [1] => 5 [2] => 20 [3] => 21 ) ;
Итак, я должен поставить это здесь, но что-то идет не так ..
public function find_pr_by_user ($find,$id_users) {
$this -> db -> where_in ('req_by_id'.$id_users || 'check_by_id',$id_users || 'approve_by_id',$id_users);
$this -> db -> where ("(ref_no LIKE '%$find%' || pr_title LIKE '%$find%' || req_date LIKE '%$find%')");
$query = $this -> db -> get ('pr_data') ;
return $query -> result () ;
}
Я получаю сообщение об ошибке преобразования массива в строку; вход у меня от $find
а также $id_users
это может быть что угодно. Я ожидал этой логики, дай мне весь массив из таблицы PR_DATA
который есть %$find%
на колонке ref_no
или же pr_title
или же req_date
но есть только $id_users
* (1 или 5 или 20 или 21) в столбце req_by_id
или же check_by_id
или же approve_by_id
,
Кто-нибудь может помочь?
Этот ответ основан на предположении, что вам нужно скобки в первом where_in()
в вашем коде.
К сожалению, CodeIgniter не полностью поддерживает скобки с Active Record. Поэтому вам придется использовать where()
с более сложным синтаксисом SQL в нем.
public function find_pr_by_user ($find,$id_users) {
$id_users_glued = implode(",",$id_users);
$this->db->where('(req_by_id IN (' . $id_users_glued . ') || check_by_id IN (' . $id_users_glued . ') || approve_by_id IN (' . $id_users_glued . '))');
$this->db->where("(ref_no LIKE '%$find%' || pr_title LIKE '%$find%' || req_date LIKE '%$find%')");
$query = $this->db->get('pr_data') ;
return $query->result () ;
}
В Active Record CI так будет обрабатываться синтаксис:
ПЕРВЫЙ ГДЕ будет рассматриваться как: WHERE (req_by_id IN ($id_users_glued) || check_by_id IN ($id_users_glued) || approve_by_id IN ($id_users_glued)
$id_users_glued
будет производить что-то вроде 1,2,3,4,5
ВТОРОЕ ГДЕ будет рассматриваться как: AND (ref_no LIKE '%$find%' || pr_title LIKE '%$find%' || req_date LIKE '%$find%')
Замечания: Я не проверял код, потому что у меня нет вашей структуры БД. Дайте мне знать, если это не работает.
Других решений пока нет …