Как я могу добавить фильтр, чтобы вызов API возвращал только те результаты, которые мне нужны?

Это то, что я получил до сих пор, но это не работает.

public function getCompleteness(){
$searchBuilder = new AkeneoSearchBuilder();
$searchBuilder->addFilter('completeness', '=', 100);

try {
$products = $this->apiClient->getProductApi()->all(
50,
[
'search' => $searchBuilder->getFilters(),
'scope' => 'ecommerce'
]
);
} catch (HttpException $e){
echo "Message: " . $e->getMessage();
echo "Code: " . $e->getCode();
}

return $products;
}

}

Это вызов, который я пытаюсь использовать из Akeneo API.

{{url}}/api/rest/v1/products?search={"completeness":[{"operator":"=","value":100,"scope":"ecommerce"}]}

Как я могу использовать метод GetCompleteness (), чтобы он дал некоторые результаты? У меня проблема с использованием AkeneoSearchBuilder ();

3

Решение

Когда вы делаете:

$searchBuilder = new AkeneoSearchBuilder();
$searchBuilder->addFilter('completeness', '=', 100);
$products = $this->apiClient->getProductApi()->all(
50,
[
'search' => $searchBuilder->getFilters(),
'scope' => 'ecommerce'
]
);

Это в основном означает: «Для всех продуктов, указанных в поле «undefined», укажите все их значения для электронной коммерции.».

То, что вы пытаетесь достичь, это (я думаю): «Для всех продуктов, входящих в сферу «электронной коммерции», дайте мне все их значения».

Как вы можете прочитать на официальной документации о фильтр полноты, вам нужно указать область действия:

$searchBuilder = new AkeneoSearchBuilder();
$searchBuilder->addFilter('completeness', '=', 100, ['scope' => 'ecommerce']);

Теперь вы можете получить их значения, вызвав:

$products = $this->apiClient->getProductApi()->all(
50,
[
'search' => $searchBuilder->getFilters()
]
);

Обратите внимание, что здесь я удалил параметр «scope».

Возобновить:

2

Другие решения

Других решений пока нет …