cms icon indicating copy to clipboard operation
cms copied to clipboard

REST API中的获取内容列表 API 在wheres条件中查询ExtendValues字段无法使用json查询方法

Open fsea opened this issue 1 year ago • 6 comments

select * from sscms_20211101_1 where ExtendValues->'$.rowGuid' = '12112';这样是可以查出来数据的 但是在/api/v1/contents接口中发送如下请求,会报错Unknown column,所以要怎么ExtendValues中的json节点呢? { "siteId": 3, "checked":true, "wheres": [{ "column": "ExtendValues->'$.rowGuid'", "operator": "=", "value": "12112" }], "page": 1, "perPage": 30 }

fsea avatar Mar 03 '23 15:03 fsea

API传输的Column字段后端会验证数据库表是否有这个字段,所以传ExtendValues->'$.rowGuid'这种后端验证通不过。 "wheres": [{ "column": "ExtendValues", "operator": "LIKE", "value": "%12112%" }], 试试这样看行不行

starlying avatar Mar 06 '23 03:03 starlying

这样like误差太大了,如果别的自定义自段里也有12112,也会被查出来。 是希望实现查询ExtendValues里的某个具体扩展字段的值,而不是整个ExtendValues的值。 建议添加一个独立的节点,可与wheres同级,专门用来查询ExtendValues里的节点,例如: “whereExtendValues”:[{ "column": "rowGuid", "operator": "LIKE", "value": "%12112%" }],

fsea avatar Mar 06 '23 08:03 fsea

然后后台接收到后,按josn查询方法,执行查询,例如: select * from sscms_20230221_1 where json_extract(ExtendValues,'$.rowGuid')='12112'

fsea avatar Mar 06 '23 08:03 fsea

当然,每个数据库的json查询方法不一样,需要分别处理

fsea avatar Mar 06 '23 08:03 fsea

收到,我们会研究一下

starlying avatar Mar 07 '23 03:03 starlying

我也遇到这个问题了

WaitFYting avatar Apr 14 '24 10:04 WaitFYting