Как индексировать динамически сгенерированный вложенный столбец JSON в mysql - PullRequest
0 голосов
/ 01 июля 2018

Я работал в случае, когда мне нужна помощь, у меня есть веб-приложение, в котором администратор может создавать формы из панели мониторинга, каждая форма имеет поля и свойства , где поля состоит из image, name, type, required, public и свойства состоят только из имени

Итак, я создал таблицы, как показано ниже:

forms_table:

ID | Name | status

forms_fields_table

ID | form_id | name | slug | type | options | required

forms_properties

ID | form_id | name | slug

А с другой стороны, другие пользователи могут создавать объекты недвижимости, в которых им нужно будет заполнить данные выбранной формы категории недвижимости, поэтому я сохраняю данные заполненной формы в столбце таблицы недвижимости

данные сохраняются следующим образом

[
  {slug_value}: {
    "name": "xxxx",
    "value": "xxxx",
    "slug": "ssss",
    "value": 42
  },
  {slug_value}: {
    "name": "yyy",
    "value": "yyy",
    "slug": "aaaa",
    "value": 42
  },
] 

, где все эти данные являются динамическими, и ключ каждого json такой же, как и слаг, и пользователь должен иметь возможность фильтровать объекты недвижимости по этим динамическим данным по слагу и значению.

Итак, вопрос возникает здесь, я знаю, что могу фильтровать данные по вложенному JSON следующим образом: DB::table('realestates')->where('attributes->{slug_name}->value', 'red')->get();, но я не нашел способа индексировать динамический вложенный JSON, так что это займет некоторое время в процессе фильтрации.

И когда я думал, мне пришло в голову, что если я сохраню эти динамические данные в виде строки и отфильтрую строку следующим образом attributes = "value":"search_query", но я не хочу менять структуру даром.

Я использую Laravel

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...