Как избежать параметра в подобном SQL-запросе, используя активную запись?

Есть запрос со скобками:

SELECT * 
FROM users 
WHERE company_id = 1 AND (
    name LIKE "%smith%" OR 
    last_name LIKE "%smith%"
)

Но в codeigniter есть:

$query_members = $this->db
    ->select('users.*')
    ->from('users')
    ->like(array('users.names' => $search))
    ->or_like(array('users.last_name' => $search))
    ->where(array('users.company_id' => 1));

Это генерирует:

SELECT * 
FROM users 
WHERE 
    name LIKE '%smith%' OR 
    last_name LIKE '%smith%' AND 
    company_id = 1;

И не работает, мне нужно ((а или б) и в), а не (а или б и в). Я нашел решение здесь: Codeigniter скобки в динамическом запросе Active Record, но переменная экранируется полными кавычками, мне нужно экранировать со значением "%" перед и pos. У меня есть это:

$search_escaped = $this->db->escape($search);
$query_members = $this->db
    ->select('users.*')
    ->from('users')
    ->where('(users.names LIKE "%'.$search_escaped.'%" OR users.last_name LIKE "%'.$search_escaped.'%")')
    ->where(array('members.company_id' => (int)$company_id));

Но запрос добавляет плохие кавычки:

SELECT `users`.*
FROM `users`
WHERE (users.names LIKE "%'smith'%" OR users.last_name LIKE "%'smith'%")
AND `members`.`company_id` = 2

"%'smith'%" плохо цитируется. Как я могу решить эту проблему, используя активную запись codeigniter 3.0.0?


person e-info128    schedule 19.03.2016    source источник
comment
так что по существу у вас теперь правильный синтаксис, но с кавычками?. В документах упоминается третий параметр в методе where для отключения обратных галочек. $this-›db-›where() принимает необязательный третий параметр. Если вы установите значение FALSE, CodeIgniter не будет пытаться защитить ваши имена полей или таблиц с помощью обратных кавычек. ellislab.com/codeigniter/user-guide/database/   -  person kurt    schedule 20.03.2016
comment
Это будет -›where('query...', null, false) ? Я попытаюсь...   -  person e-info128    schedule 20.03.2016
comment
Похоже на то. Я никогда не использовал его, хотя он выглядит многообещающе   -  person kurt    schedule 20.03.2016
comment
@WHK Похоже, вам удалось найти решение в своих комментариях?   -  person MackieeE    schedule 22.03.2016