如何通过Magento 2 REST API正确获取指定日期范围的已完成订单
完善Magento 2 REST API订单筛选请求(含日期范围)
没问题,我来帮你搞定这个日期范围筛选的问题!你之前的请求已经正确筛选了已完成状态的订单,现在只需要在同一个filterGroup里添加两个日期相关的筛选条件就行——因为Magento的searchCriteria规则是:
- 同一个
filterGroup下的多个筛选条件是AND关系(必须同时满足) - 不同
filterGroup之间是OR关系(满足任一即可)
完整的请求URL示例
/rest/V1/orders?searchCriteria[filterGroups][0][filters][0][field]=status&searchCriteria[filterGroups][0][filters][0][value]=Complete&searchCriteria[filterGroups][0][filters][0][conditionType]=eq&searchCriteria[filterGroups][0][filters][1][field]=created_at&searchCriteria[filterGroups][0][filters][1][value]=2024-01-01 00:00:00&searchCriteria[filterGroups][0][filters][1][conditionType]=gteq&searchCriteria[filterGroups][0][filters][2][field]=created_at&searchCriteria[filterGroups][0][filters][2][value]=2024-01-31 23:59:59&searchCriteria[filterGroups][0][filters][2][conditionType]=lteq
关键部分解释
我把新增的日期筛选逻辑拆解开给你看,这样你就不会再困惑索引问题了:
- 第一个筛选条件(原有的):
searchCriteria[filterGroups][0][filters][0]:指定订单状态为Complete,匹配方式是精确等于(eq) - 第二个筛选条件(日期起始):
searchCriteria[filterGroups][0][filters][1]:用created_at字段(你也可以换成updated_at),匹配大于等于指定起始日期(gteq),日期格式要符合Magento要求:YYYY-MM-DD HH:MM:SS或YYYY-MM-DD - 第三个筛选条件(日期结束):
searchCriteria[filterGroups][0][filters][2]:同样用created_at字段,匹配小于等于指定结束日期(lteq)
额外提示
- 如果订单数量较多,建议加上分页参数避免返回数据过大:
&searchCriteria[pageSize]=20&searchCriteria[currentPage]=1(每页20条,取第一页) - 日期值如果包含空格,记得在URL中编码成
%20,比如2024-01-01%2000:00:00,有些HTTP客户端会自动帮你处理这个
内容的提问来源于stack exchange,提问作者mishamusha
相关产品推荐
相关产品推荐

