0 Пользователей и 1 Гость просматривают эту тему.
  • 12 Ответов
  • 181 Просмотров
*

ghostcom

  • Захожу иногда
  • 101
  • 1 / 0
Здравствуйте! Вопрос такой, можно ли средствами Joomla перебирать базы данных если значения в бд записаны в JSON? Поиск не помогает!
Спасибо!
*

sivers

  • Захожу иногда
  • 456
  • 44 / 0
Re: Выборка по Json данным из БД
« Ответ #1 : 20.03.2019, 14:38:42 »
Можно искать средствами БД в жсон:
Код
WHERE `jsonfield`->'$.price' = 50
*

ghostcom

  • Захожу иногда
  • 101
  • 1 / 0
Re: Выборка по Json данным из БД
« Ответ #2 : 20.03.2019, 15:56:25 »
Можно искать средствами БД в жсон:
Код
WHERE `jsonfield`->'$.price' = 50

Да похоже только так, Joomla пока не готова к такому. Теперь другой вопрос будет ли такая запись в скором времени депрекатед)
Спасибо!
*

sivers

  • Захожу иногда
  • 456
  • 44 / 0
Re: Выборка по Json данным из БД
« Ответ #3 : 20.03.2019, 16:00:50 »
Да похоже только так, Joomla пока не готова к такому. Теперь другой вопрос будет ли такая запись в скором времени депрекатед)
Спасибо!
Для фильтрации средствами php (джумлой) придется сперва считать все строки, в цикле декодировать жсон и по условию удалять лишние элементы массива.

mysql вроде б не так давно только научился искать по json-полям, поэтому врядли будут сразу же выпиливать. Другой вопрос, что это (скорее всего) очень неоптимальный поиск... Но, пожалуй, через распаковку в пхп - еще более неоптимально.
« Последнее редактирование: 20.03.2019, 16:04:35 от sivers »
*

sivers

  • Захожу иногда
  • 456
  • 44 / 0
Re: Выборка по Json данным из БД
« Ответ #4 : 20.03.2019, 16:07:14 »
В довесок:
Код
WHERE `jsonfield`->'$.price' = 5           // По полю первого уровня вложенности
WHERE `jsonfield`->'$.*.price' = 5         // По полю второго (и более?) уровня вложенности
WHERE `jsonfield`->'$.price' IS NULL       // Если поле в json отсутствует
WHERE `jsonfield`->'$.price' IS NOT NULL   // Если поле в json присутствует
*

ghostcom

  • Захожу иногда
  • 101
  • 1 / 0
Re: Выборка по Json данным из БД
« Ответ #5 : 20.03.2019, 16:13:09 »
Через json_decode вообще не вариант если много записей и в каждой большой json. До этого делал дополнительную таблицу и через left_join делал фильтрацию, но насколько это "энергозатратно" не знаю, а тут вроде попроще получается и меньше писанины.
« Последнее редактирование: 20.03.2019, 16:19:11 от ghostcom »
*

ghostcom

  • Захожу иногда
  • 101
  • 1 / 0
Re: Выборка по Json данным из БД
« Ответ #6 : 20.03.2019, 16:21:06 »
Код
$query = "SELECT * FROM #__table WHERE column->'$.a'=1";

Работает у меня только такое экранирование
*

ghostcom

  • Захожу иногда
  • 101
  • 1 / 0
Re: Выборка по Json данным из БД
« Ответ #7 : 20.03.2019, 16:31:59 »
Код
{
  "a": 1,
  "b": 2,
  "c": [3, 4],
  "d": {
    "e": 5,
    "f": 6
  }
}

Код
$.a         //    вернет 1
$.c        //     вернет [3, 4]
$.c[1]    //     вернет 4
$.d.e    //      вернет 5
$**.e   //       вернет [5]
*

sivers

  • Захожу иногда
  • 456
  • 44 / 0
Re: Выборка по Json данным из БД
« Ответ #8 : 20.03.2019, 16:56:00 »
Код
$query = "SELECT * FROM #__table WHERE column->'$.a'=1";

Работает у меня только такое экранирование

Имена полей и таблиц можно экранировать косыми апострофами (на букве Ё)
*

voland

  • Легенда
  • 10340
  • 555 / 108
  • Эта строка съедает место на вашем мониторе
Re: Выборка по Json данным из БД
« Ответ #9 : 20.03.2019, 17:47:57 »
Можно искать средствами БД в жсон:
Код
WHERE `jsonfield`->'$.price' = 50
О. Любопытная фича.
Смотрю поддержка в MySQL 5.7.8+  и MariaDB 10.2+
*

AlekVolsk

  • Гуру
  • 6683
  • 386 / 4
Re: Выборка по Json данным из БД
« Ответ #10 : 20.03.2019, 22:18:17 »
поддержка в MySQL 5.7.8+  и MariaDB 10.2+
т.е. на большинсве хостов недоступна, ибо на большинстве мускул 5.6 и мария 5-я
*

voland

  • Легенда
  • 10340
  • 555 / 108
  • Эта строка съедает место на вашем мониторе
Re: Выборка по Json данным из БД
« Ответ #11 : 20.03.2019, 22:32:30 »
т.е. на большинсве хостов недоступна, ибо на большинстве мускул 5.6 и мария 5-я
Мария разве не 10+?

Ну для клиентских расширений рановато, но на перспективу и для кастомных решений - уже можно использовать
*

AlekVolsk

  • Гуру
  • 6683
  • 386 / 4
Re: Выборка по Json данным из БД
« Ответ #12 : 21.03.2019, 15:35:21 »
Мария разве не 10+?
на шаредах - точно нет
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

component/ajax/?format=json

Автор natashalina

Ответов: 5
Просмотров: 217
Последний ответ 15.11.2018, 12:52:28
от draff
Joomla 3.6.5 com_content params переписывается в пустой json с полями?

Автор pavelrer

Ответов: 0
Просмотров: 164
Последний ответ 28.10.2018, 11:30:30
от pavelrer
Error displaying the error page: Error decoding JSON data: Control character error

Автор dron

Ответов: 4
Просмотров: 991
Последний ответ 07.06.2017, 11:19:35
от dron
Выскакивает окно при открытии режима редактирования модуля При обработке следующих json-данных произ

Автор Mega4el

Ответов: 1
Просмотров: 374
Последний ответ 17.01.2017, 11:17:36
от Mega4el