2017-02-09 4 views
1

В magento 2 REST API существует возможность поиска продукта с использованием различных критериев поиска. Как вы знаете, приведен пример нижеMagento 2 Фильтр API REST по категориям

http://magentohost/rest/V1/products?searchCriteria[filter_groups][0][filters][0][field]=name& searchCriteria[filter_groups][0][filters][0][value]=%macbook%& searchCriteria[filter_groups][0][filters][0][condition_type]=like 

Но я не нашел возможность поиска по категориям. Как мы можем это сделать?

ответ

3

Для поиска по категориям, это просто. Вы должны просто пройти category_id в качестве поля. Посмотрите на примере ниже:

http://magentohost/rest/V1/products?searchCriteria[filterGroups][0][filters][0][field]=category_id& searchCriteria[filterGroups][0][filters][0][value]=4& searchCriteria[filterGroups][0][filters][0][conditionType]=eq&searchCriteria[sortOrders][0][field]=created_at& searchCriteria[sortOrders][0][direction]=DESC& searchCriteria[pageSize]=10& searchCriteria[currentPage]=1 
0

Вы также можете настроить таргетинг на несколько категорий сразу:

searchCriteria[filter_groups][0][filters][0][field]=category_id&searchCriteria[filter_groups][0][filters][0][value]=1,2,3&searchCriteria[filter_groups][0][filters][0][condition_type]=in&searchCriteria[sort_orders][0][field]=created_at&searchCriteria[sort_orders][0][direction]=DESC&searchCriteria[current_page]=1&searchCriteria[page_size]=10 

У меня есть немного LIB - https://github.com/dsheiko/magentosearchquerybuilder, который помогает мне строить такие запросы

$builder = new SearchCriteria(); 
$builder 
    ->filterGroup([ 
     [ "category_id", implode(",", $categories), SearchCriteria::OP_IN ], 
    ]) 
    ->sortOrder("created_at", "DESC") 
    ->limit(1, 10); 


echo $builder->toString();