如何为Magento SOAP查询指定最大结果集?
我通过SOAP API查询Magento以获取与给定状态匹配的订单列表。我们有一些远程主机需要太长时间才能返回列表,所以我想限制结果集但是我没有看到这个参数。
$orderListRaw = $proxy -> call ( $sessionId, 'sales_order.list', array ( array ( 'status' => array ( 'in' => $orderstatusarray ) ) ) );
我能够看到我们确实得到了数据(6分钟后),并且已经能够处理超时等,但更愿意强制使用最大结果集。
答案 0 :(得分:1)
似乎不能使用limit来完成(加上你必须做一些复杂的分页逻辑来获取所有记录,因为你需要知道记录的总数而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
的信息