【问题标题】:Combined complex filter for ranges范围的组合复杂过滤器
【发布时间】:2013-01-29 09:33:22
【问题描述】:

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

【问题讨论】:

    标签: web-services magento soap


    【解决方案1】:

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

    把戏做得很漂亮!

    【讨论】:

    • 这太不可思议了,使用increment_id 作为销售订单列表的列似乎对我有用。我会将这种方法归为 Magento 的 SOAP API 实现的“可悲”部分。
    • 可悲的是,这对我来说在拉订单时的起止日期非常有效。感谢您的发现。
    【解决方案2】:

    在谷歌上搜索了很多之后,我终于来了to some explanation

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

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

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

    【讨论】:

      【解决方案3】:

      好像是mage\sales\order\api\v2.php的bug

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

      【讨论】:

      • 嗯,这个问题比较老了。我仍然将我的 2cts 发布到它上面......很遗憾这个问题在将近 3 年后仍然存在。
      猜你喜欢
      • 1970-01-01
      • 2017-02-28
      • 2015-06-17
      • 1970-01-01
      • 1970-01-01
      • 2015-06-19
      • 1970-01-01
      • 1970-01-01
      • 2013-04-19
      相关资源
      最近更新 更多