Я работал в случае, когда мне нужна помощь, у меня есть веб-приложение, в котором администратор может создавать формы из панели мониторинга, каждая форма имеет поля и свойства , где поля состоит из
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