如何在Strapi API中基于多对多关系筛选关联Football的Trip数据
解决Strapi多对多关联查询问题
对于你的Sport和Trip多对多关联场景,要筛选关联了Football的Trip数据,你之前的URL格式错误,正确写法分Strapi版本来看:
Strapi v4(当前主流版本)
正确的API请求URL应该是:
GET /api/trips?filters[sports][Name][$eq]=Football&populate=sports
filters[sports][Name][$eq]=Football:指定过滤条件,匹配Trip关联的sports集合中Name属性等于Football的条目populate=sports:如果需要在返回的Trip数据中包含关联的Sport信息,必须加上这个参数,否则关联字段只会返回ID数组
如果希望返回的Trip里仅包含Football这个关联Sport(而非所有关联的Sport),可以给populate也添加过滤:
GET /api/trips?filters[sports][Name][$eq]=Football&populate[sports][filters][Name][$eq]=Football
Strapi v3(旧版本)
若使用的是v3,URL格式略有不同:
GET /trips?filters[sports.name][$eq]=Football&_expand=sports
filters[sports.name][$eq]=Football:v3中通过.来访问关联模型的属性_expand=sports:用来展开关联的Sport数据
你之前的请求报错原因:
- Strapi v4的API路径需加上
/api前缀(v3不需要,但过滤语法也不支持你写的格式) $in是用于匹配数组类型字段的枚举值,而这里要过滤关联模型的字符串属性,应使用$eq做精准匹配- 未指定关联模型的具体属性
Name,直接写sports无法定位到Sport的Name字段
内容的提问来源于stack exchange,提问作者Samuel
相关产品推荐
相关产品推荐

