Web 服务 - 针对范围的组合复杂筛选器



在Magento 1.7 SOAP APIv2上,我正在寻找一种方法来获取从SOAP API检索信息的日期范围。

$complexFilter = new filters();
$complexFilter->complex_filter = array(
    array(
        'key' => 'created_at',
        'value' => array('key' => 'from', 'value' => '2012-12-17 00:00:00')
    ), 
    array(
        'key' => 'created_at',
        'value' => array('key' => 'to', 'value' => '2013-01-21 12:02:02')
    ), 
);

这似乎是最自然的方法,但只使用了最后一个标准。我还尝试了其他组合,例如复杂过滤器的复杂过滤器,组合它们的不同方法,使用 gt 和类似而不是 from 和 co。这些方法中的大多数都产生了相同的结果:只使用里面的最后一个标准。

通过 API 获取日期范围的正确方法是什么?这也可以通过常规过滤器完成吗?如果是这样,如何合并开始和结束日期?

我找到了一种更好的方法来查看Magento中的代码!幸运的是,它区分大小写,因此:

$complexFilter->complex_filter = array(
    array(
        'key' => 'CREATED_AT',
        'value' => array('key' => 'from', 'value' => '2012-12-17 00:00:00')
    ), 
    array(
        'key' => 'created_at',
        'value' => array('key' => 'to', 'value' => '2013-01-21 12:02:02')
    ), 
);

把戏做得很整齐!

在谷歌搜索了更多之后,我终于得到了一些解释。

显然,复杂筛选器的实现不允许存在多个属性。这也是我在测试中注意到的:只有最后一个使用的属性会影响结果。因此,我需要找到另一种方式来做我想做的事。看到Magento没有提供一种简单的方法来使用SOAP API做到这一点,这有点令人难过。

我现在使用的最后一种方法是确定一个最接近我想要的日期。然后,只需遍历我想要的日期范围内的结果。这样(至少使用我们的产品数据),我将负载和结果保持在最低限度,并且仍然可以获得所需的产品。

编辑 似乎原始链接已关闭,该网站不再存在。上面的文字应该是足够的信息。该博客仅展示了一些错误实现的代码示例。

似乎是法师\销售\订单\api\v2 中的一个错误.php

Matlock 在此线程的评论部分中为此提供了一个可能的解决方案:http://www.magentocommerce.com/bug-tracking/issue?issue=8073

最新更新