Как логически отделить несколько условий OR LIKE от других условий WHERE с помощью построителя запросов CodeIgniter [дубPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как логически отделить несколько условий OR LIKE от других условий WHERE с помощью построителя запросов CodeIgniter [дуб

Сообщение Anonymous »

В моей базе данных есть несколько продуктов. В моей таблице продуктов у меня есть столбец с именем active, который по умолчанию имеет значение 1 (что означает, что он «активен»). Когда я удаляю продукт вместо удаления строки, я просто меняю активный столбец на 0
У меня также есть функция поиска, которая ищет продукты по имени или описанию и т. д. В качестве основы я использую codeigniter. Вот код, который генерирует запрос:

Код: Выделить всё

$search_query = $this->db->from('company_products')
->where('company_products.active', 1)
->or_like(array('name'=> $keywords, 'model'=> $keywords, 'brand'=> $keywords, 'description'=> $keywords))
->order_by('id', 'RANDOM')
->get();
Этот код генерирует следующий запрос MySQL:

Код: Выделить всё

SELECT `company_products`.*
FROM (`company_products`)
WHERE `company_products`.`active` =  1
AND  `name`  LIKE '%chair%'
OR  `model`  LIKE '%chair%'
OR  `brand`  LIKE '%chair%'
OR  `description`  LIKE '%chair%'
После «удаления» продукта (изменения активного столбца на 0) продукт по-прежнему отображается в результатах поиска. Я подозреваю, что в коде происходит следующее:

Код: Выделить всё

(SELECT a product WHERE active = 1 - AND - name LIKE %search_string%)
- OR -
(SELECT a product WHERE model LIKE %search_string%)
- OR -
(SELECT a product WHERE brand LIKE %search_string%)
- OR -
(SELECT a product WHERE description LIKE %search_string%)
Но вот чего я хочу:

Код: Выделить всё

(SELECT a product WHERE active = 1)

- AND -

{ (SELECT a product WHERE model LIKE %search_string%)
- OR -
(SELECT a product WHERE model LIKE %search_string%)
- OR -
(SELECT a product WHERE brand LIKE %search_string%)
- OR -
(SELECT a product WHERE description LIKE %search_string%) }
Надеюсь, мой псевдокод не слишком запутан. Я хотел бы сделать это, используя шаблон построения запросов CodeIgniter.

Подробнее здесь: https://stackoverflow.com/questions/144 ... -condition
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»