如何过滤订单搜索结果,仅返回含invoice和credit_note单据的订单?
订单过滤解决方案
你的问题出在过滤条件的位置放错了——你把filter放在了关联实体的嵌套配置里,这只会控制返回的documents关联数据哪些被包含,不会筛选出符合条件的订单本身。要过滤订单,得在根层级的filter里通过关联路径来设置条件。
正确的请求数据应该是这样的:
data: { filter: [ { type: "any", field: "documents", filter: [ { type: "in", field: "documents.documentType.technicalName", value: ["invoice", "credit_note"] } ] } ], associations: { documents: { associations: { documentType: {} // 仅需关联单据类型,无需在此加过滤 } } }, includes: { order: ['orderNumber', 'documents'], documentType: ['technicalName'] } }
关键说明:
- 根层级的
filter是用来筛选订单实体的,通过any操作符检查订单关联的documents中,是否存在单据类型技术名称匹配指定值的记录。 in操作符可以一次性匹配多个目标值,比写多个equals更简洁高效。- 关联配置里的
filter只负责控制返回的关联数据范围(比如只返回符合条件的单据),但不会过滤主订单列表——这是你之前代码无效的核心原因。
内容的提问来源于stack exchange,提问作者DannyDan
相关产品推荐
相关产品推荐

