Magento 2 - REST API - 嵌套json文件中的searchCriteria

时间:2018-02-01 22:21:39

标签: rest api magento magento2

我想过滤掉所有具有特定的订单。

此处来自country_id回复的示例:

json

以下是我尝试的内容:

{  
    "items": [{  
        "total_qty_ordered": 3,
        "updated_at": "2018-01-10 15:59:05",
        "weight": 0,
        "billing_address": {  
            "city": "Schaffhausen",
            "country_id": "CH"
        }
    }]
}

它不起作用,因为url = ( "http://<host>/rest/V1/orders" "?searchCriteria[filter_groups][0][filters][0][field]=country_id" "&searchCriteria[filter_groups][0][filters][0][value]=CH" ) 位于嵌套实体中。

因此,我尝试将country_id替换为country_id,但它也无效。

2 个答案:

答案 0 :(得分:0)

这是搜索条件的json结构..

{
"search_criteria": {
    "filter_groups": [
        {
            "filters": [
                {
                    "field": "attribute_name",
                    "value": [string|int|float],
                    "condition_type": [string]; optional
                }
                more entries
            ]
        }
        more entries
    ],
    "current_page": [int] page number; optional
    "page_size": [int] number of items on a page; optional
    "sort_orders": [ optional
        {
            "field": "attribute_name",
            "direction": [int] -1 or 1
        }
        more entries
    ]
}
}

答案 1 :(得分:0)

用于搜索的默认REST API仅搜索sales_order表中可用的列。

您无法使用country_id进行搜索,您会收到类似未找到列的错误。要使其正常工作,您必须自定义方法getList

magento/module-sales/Model/OrderRepository.php通过创建自定义模块,或者您可以构建自定义API以根据country_id

获取订单详细信息

正确的网址

 http:/host/index.php/rest/V1/orders?searchCriteria[filter_groups][0][filters][0][field]=country_id&searchCriteria[filter_groups][0][filters][0][value]=US&searchCriteria[filter_groups][0][filters][0][conditionType]=eq

方法:GET

标题:

Content-Type : application/json
Authorization : Bearer <TOKEN>