Strapi使用IN过滤器与AND子句查询多对多关联集合的方法
问题原因说明
- 第一种拼接两个
_where数组条件的写法,多对多关联查询的底层是左连接关联表,会要求单条关联行同时匹配title=foo和title=bar,不存在符合该条件的关联行,因此返回0条结果 - 第二、第三种使用
_in操作符的写法,匹配逻辑为OR,只要分类包含foo或者bar就会命中,因此返回仅关联foo、同时关联两个分类的共2条结果
正确实现方案
直接使用针对多值关联字段的_all过滤器即可,该过滤器要求关联字段必须包含所有传入的指定值,才会返回对应条目,符合你需要同时匹配两个分类的需求,查询语句如下:
GET /blogs?categories.title_all[0]=foo&categories.title_all[1]=bar
也可以使用等价写法:
GET /blogs?categories.title_all=foo&categories.title_all=bar
执行上述查询后,只会返回同时关联了foo、bar两个分类的1条blog数据,完全匹配预期。
内容的提问来源于stack exchange,提问作者Killerpixler
相关产品推荐
相关产品推荐

