用于范围的复合过滤器

时间:2013-01-29 09:33:22

标签: web-services magento soap

在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获取日期范围的正确方法是什么?这也可以通过常规过滤器完成吗?如果是这样,如何结合开始和结束日期?

3 个答案:

答案 0 :(得分:16)

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

诀窍非常巧妙!

答案 1 :(得分:3)

经过谷歌搜索后,我终于来了to some explanation

显然,复杂过滤器的实现不允许存在多个属性。这也是我在测试期间注意到的:只有最后使用的属性会影响结果。因此,我需要找到另一种做我想做的事情。这是莫名其妙地伤心难过地看到,Magento的不提供一种简单的方式与疗法SOAP API来做到这一点。

我现在使用的最后一种方法是确定最接近我想要的日期。然后迭代我想要的日期范围内的结果。通过这种方式(至少在我们的产品数据中),我将负载和结果保持在最低水平,并且仍能获得所需的产品。

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

答案 2 :(得分:2)

似乎是mage \ sales \ order \ api \ v2.php

中的错误

马特洛克在此帖子的评论部分为此提供了一个可能的解决方案:http://www.magentocommerce.com/bug-tracking/issue?issue=8073