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 に答える