4

如何为 Magento SOAP 查询指定最大结果集?

我正在通过 SOAP API 查询 Magento 以获取与给定状态匹配的订单列表。我们有一些远程主机需要很长时间才能返回列表,所以我想限制结果集但是我没有看到这个参数。

$orderListRaw = $proxy -> call ( $sessionId, 'sales_order.list', array ( array ( 'status' => array ( 'in' => $orderstatusarray ) ) ) );

我能够看到我们确实取回了数据(6 分钟后)并且已经能够处理超时等,但更愿意只强制一个最大结果集。

4

1 回答 1

2

似乎不能使用限制来完成,(另外你必须做一些复杂的分页逻辑来获取所有记录,因为你需要知道记录的总数,而 api 没有这样的方法)查看 api 调用列表 @ http://www.magentocommerce.com/api/soap/sales/salesOrder/sales_order.list.html

但是您可以做的一种解决方法是使用复杂的过滤器,以根据创建日期限制结果集。(根据订单量调整为每小时、每天或每周)。

此外,由于您使用的是状态类型(假设您排除更多只是取消订单),您可能需要考虑获取所有订单并在本地跟踪 order_id/status(仅处理具有上述状态的那些)和未进行的其余部分将是稍后可能需要您注意的订单 ID 列表

伪代码示例

$params = array(array(
        'filter' => array(
            array(
                'key' => 'status',
                'value' => array(
                    'key' => 'in',
                    'value' => $orderstatusarray,
                ),
            ),
        ),
        'complex_filter' => array(
            array(
                'key' => 'created_at',
                'value' => array(
                    'key' => 'gteq',
                    'value' => '2012-11-25 12:00:00'
                ),
            ),
            array(
                'key' => 'created_at',
                'value' => array(
                    'key' => 'lteq',
                    'value' => '2012-11-26 11:59:59'
                ),
            ),
        )
    ));

    $orderListRaw = $proxy -> call ( $sessionId, 'sales_order.list', $params);

阅读更多关于过滤@http ://www.magentocommerce.com/knowledge-base/entry/magento-for-dev-part-8-varien-data-collections

于 2012-10-26T23:52:21.020 回答