15

Magento 1.7 SOAP APIv2で、SOAPAPIから情報を取得するための日付範囲を取得する方法を探しています。

$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、andcoの代わりにandalikeを使用するなど、他の組み合わせも試しましfromた。これらのアプローチのほとんどは同じ結果になりました。内部の最後の基準のみが使用されます。

APIを介して日付範囲を取得する適切な方法は何ですか?これは通常のフィルターを介して行うこともできますか?もしそうなら、開始日と終了日を組み合わせる方法は?

4

3 に答える 3

19

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')
    ), 
);

トリックはかなりきれいに行われます!

于 2014-04-04T22:25:50.377 に答える
4

もっとグーグルした後、私はついにいくつかの説明に行き着きました。

明らかに、複雑なフィルターの実装では、複数の属性を存在させることはできません。これは、テスト中に気付いたものでもあります。最後に使用された属性のみが結果に影響します。したがって、私は自分がやりたいことを行う別の方法を見つける必要があります。MagentoがSOAPAPIでこれを行う簡単な方法を提供していないのを見るのはどういうわけか悲しいことです。

私が今使用した最後のアプローチは、私が望むものに最も近い日付を決定することです。次に、必要な日付範囲にある結果を繰り返し処理します。このようにして(少なくとも私たちの製品データでは)、負荷と結果を最小限に抑えながら、目的の製品を取得します。

編集は元のリンクがダウンしていて、サイトがもう存在しないようです。上記のテキストは十分な情報であるはずです。ブログには、実装に問題があるいくつかのコード例が示されているだけです。

于 2013-02-08T13:50:28.940 に答える
2

mage \ sales \ order \ api\v2.phpのバグのようです

Matlockは、このスレッドのコメントセクションでこれに対する可能な解決策を提供します:http://www.magentocommerce.com/bug-tracking/issue?issue = 8073

于 2013-02-08T23:15:17.647 に答える