Объединенный сложный фильтр для диапазонов

На мыле Magento 1.7 APIv2 я ищу способ заставить диапазон дат восстанавливать информацию от 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 и одинаково вместо от и co. Большинство этих подходов привело к тому же самому результату: только последний критерий внутри будет использоваться.

Что надлежащий путь состоит в том, чтобы получить диапазон дат через API? Это может также быть сделано через обычный фильтр? Если так, как объединить дату начала и дата окончания?

14
nl ja de

3 ответы

Я нашел лучший способ смотреть на код в 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')
    ), 
);

добивается цели довольно аккуратно!

16
добавлено
Это невероятно, кажется, работает на меня использующий increment_id как колонка списка заказа на покупку. I' d смешивают этот подход в "печальную" часть Magento' s внедрение API МЫЛА.
добавлено автор beeplogic, источник
Печально это работает действительно хорошо на меня с от и до дат на натяжении заказов. Спасибо за находку.
добавлено автор jesseconnr, источник

После googling намного больше я наконец приезжаю к некоторому объяснению.

Очевидно, внедрение сложных фильтров не позволяет более тогда одному признаку присутствовать. Это также, что я заметил во время своих тестов: только последний признак использовал, влияет на результат. Я поэтому должен найти другой способ сделать то, что я хочу. Так или иначе грустно видеть, что Magento не обеспечивает легкий способ сделать это с там API МЫЛА.

Заключительный подход, который я использовал теперь, должен определить дату, которая происходит самая близкая к тому, что я хочу. Тогда просто повторите через результаты что, которые находятся в daterange, который я хочу. Этот путь (по крайней мере, с нашими данными о продукте), я держу груз и результаты к minumum и все еще получаю желаемые продукты.

edit seems like the original link is down and the site doesn't exist anymore. The text above should be enough information. The blog merely showed some code examples with the faulty implementation.

3
добавлено

Кажется, ошибка в mage\sales\order\api\v2.php

Matlock provides a possible solution for this in the comment section of this thread: http://www.magentocommerce.com/bug-tracking/issue?issue=8073

2
добавлено
Хм, проблема довольно стара. Я все еще отправил мой 2cts к нему... Печальный, что проблема все еще там почти после 3 лет.
добавлено автор DrColossos, источник