如何在MySQL中索引动态生成的嵌套JSON列

时间:2018-07-01 08:25:18

标签: mysql json laravel

我在需要帮助的情况下运行,我有一个Web应用程序,管理员可以在该应用程序中从仪表板创建表单,每个表单具有字段属性,其中字段包括 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的键都与slug相同,用户应该能够通过slug和value过滤这些动态数据的房地产。

问题来了,我知道我可以像这样DB::table('realestates')->where('attributes->{slug_name}->value', 'red')->get();通过嵌套的JSON过滤数据,但是我没有找到索引动态嵌套JSON的方法,因此在过滤过程中会花费一些时间。

就像我在想的那样,我想到了如果我将这些动态数据存储为字符串并像这样attributes = "value":"search_query"来过滤字符串,但是我不想一无所获地改变结构。

我正在使用laravel

0 个答案:

没有答案