Php 如何添加过滤器,使API调用只返回我想要的结果?

Php 如何添加过滤器,使API调用只返回我想要的结果?,php,filter,akeneo,Php,Filter,Akeneo,这是我目前得到的,但它不起作用 public function getCompleteness(){ $searchBuilder = new AkeneoSearchBuilder(); $searchBuilder->addFilter('completeness', '=', 100); try { $products = $this->apiClient->getProductApi()->all(

这是我目前得到的,但它不起作用

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"}]}
如何使用getCompletion()方法来生成一些结果?我在使用AkeneoSearchBuilder()时遇到问题

当您这样做时:

$searchBuilder = new AkeneoSearchBuilder();
$searchBuilder->addFilter('completeness', '=', 100);
$products = $this->apiClient->getProductApi()->all(
    50,
    [
        'search' => $searchBuilder->getFilters(),
        'scope' => 'ecommerce'
    ]
);
它的基本意思是:“对于所有范围内完整的产品,请给出它们的所有“电子商务”价值”

我想,你想要实现的是:“对于“电子商务”范围内的所有完整产品,请给出它们的全部价值。”

正如您在有关的官方文档中所看到的,您需要指定一个范围:

$searchBuilder = new AkeneoSearchBuilder();
$searchBuilder->addFilter('completeness', '=', 100, ['scope' => 'ecommerce']);
现在,您可以通过调用以下命令检索它们的值:

$products = $this->apiClient->getProductApi()->all(
    50,
    [
        'search' => $searchBuilder->getFilters()
    ]
);
注意,我在这里删除了“scope”参数

继续:

  • 当按完整性筛选时,您需要
  • 方法是仅检索此范围的值

您想要实现什么目标?什么不起作用?你有任何错误信息吗?您是否关注官方Akeneo php客户端的自述文件?感谢grena的回复。嗯,是的。。但是我得到了一个错误,范围不正确。这是我第一次使用AkeneoSearchBuilder,所以可能是我在其中出错了。