用于范围的复合过滤器

DrC*_*sos 14 soap web-services magento

在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')
    ), 
);
Run Code Online (Sandbox Code Playgroud)

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

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

Iva*_*ldo 17

我找到了一个更好的方式来查看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')
    ), 
);
Run Code Online (Sandbox Code Playgroud)

诀窍很整齐!


DrC*_*sos 4

经过更多谷歌搜索后,我终于得到了一些解释

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

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

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