[Помогите] Поиск по столбцу custom_field в таблице order

Тема в разделе "OpenCart", создана пользователем Zalom, 25 сен 2018.

  1. Zalom

    Zalom

    Регистрация:
    18 мар 2017
    Сообщения:
    37
    Симпатии:
    1
    Здравствуйте. В магазине на opencart 2.3 я создал 2 группы пользователей: физические лица и юридические лица. Для юридических лиц добавил дополнительные поля (наименования организации, ИНН и тд). При оформлении заказа юридическим лицом эти дополнительные поля записываются в таблицу order, в поле custom_field в виде json. Теперь я захотел сделать фильтр по "наименованию организации" и столкнулся с проблемой каким образом искать в поле custom_field. Пробовал искать с помощью LIKE и json_extract. LIKE не ищет названия на русском языке даже если я их перекодирую, на json_extract вылезает постоянно ошибка. Подскажите пожалуйста.
     
  2. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Значит вы что-то не так делаете. У LIKE нет никаких проблем с кириллицей.

    Какая? И почему не JSON_CONTAINS?
    Кстати, все эти json функции появились только в MySQL 5.7. Вы уверены, что ваша версия соответствует?
     
  3. Zalom

    Zalom

    Регистрация:
    18 мар 2017
    Сообщения:
    37
    Симпатии:
    1
    Да, версия не 5.7.
    В столбце custom_field есть запись {"8":"\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f 2"}. Абракадабра "\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f 2" это точно "Компания 2".
    Я в фильтре ввожу "Компания 2". Принимаю это значение и перекодирую
    Код:
    $new=json_encode(Компания 2);
    $new="\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f 2";
    
    значение в запрос
    Код:
    SELECT * FROM `ocnd_order` WHERE `custom_field` LIKE '%".$new."%'
    
    этот запрос дает пустой результат
    --- Добавлено, 25 сен 2018 ---
    однозначно, что я делаю не так, но по другому не знаю
     
  4. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    settr нравится это.
  5. Zalom

    Zalom

    Регистрация:
    18 мар 2017
    Сообщения:
    37
    Симпатии:
    1
    Вместо одного обратного слеша ставить 4 надо, никогда бы не догадался. Спасибо большое!