Комбинированный комплексный фильтр для диапазонов - программирование
Подтвердить что ты не робот

Комбинированный комплексный фильтр для диапазонов

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

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

4b9b3361

Ответ 1

После многопользовательской игры я, наконец, прихожу к некоторому объяснению.

Очевидно, что реализация сложных фильтров не позволяет присутствовать более одного атрибута. Это также то, что я заметил во время моих тестов: только последний атрибут влияет на результат. Поэтому мне нужно найти другой способ сделать то, что я хочу. Как-то грустно видеть, что Magento не предоставляет простой способ сделать это с помощью SOAP API.

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

редактировать кажется, что исходная ссылка не работает, и сайт больше не существует. В приведенном выше тексте должно быть достаточно информации. Блог просто показал некоторые примеры кода с ошибочной реализацией.

Ответ 2

Я нашел лучший способ взглянуть на код в Magento! К счастью, это CASE SENSITIVE, поэтому:

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

делает трюк довольно аккуратно!