需求是status=pending OR status=processing,客户端却把两个条件放进两个filter_groups,结果一条都没有。Magento的规则有点反直觉:同一个FilterGroup里的filters是OR,不同FilterGroup之间是AND。
searchCriteria[filter_groups][0][filters][0][field]=status searchCriteria[filter_groups][0][filters][0][value]=pending searchCriteria[filter_groups][0][filters][0][condition_type]=eq searchCriteria[filter_groups][0][filters][1][field]=status searchCriteria[filter_groups][0][filters][1][value]=processing searchCriteria[filter_groups][0][filters][1][condition_type]=eq
如果还要加customer_id=10,就把customer_id放到第二个FilterGroup,这样是 (pending OR processing) AND customer_id=10。
数组编码也会坑
某些HTTP客户端把中括号编码或重排,Magento收到的层级变了。抓实际URL或JSON,不要只看调用代码。复杂查询建议封装一个明确的自定义Service Contract,避免前端拼几十个参数。
最后用已知数据集验证四种订单:pending/客户10、processing/客户10、complete/客户10、pending/客户20,返回集合应该一眼能判断逻辑是否正确。

