Выборка коллекции продуктов Magento на основе даты окончания специальной цены в порядке убывания даты создания


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

if ($this->getCurrentOrder()) {
    if(($this->getCurrentOrder())=='position'){
        $this->_collection->setOrder('entity_id','desc');
    } else {
       $this->_collection->setOrder($this->getCurrentOrder(),$this->getCurrentDirection());
    }
}

Но я не могу отфильтровать это дальше с помощью даты окончания специальной цены <сегодняшняя дата. Кто-нибудь может помочь? Я буду очень признателен за это.

Спасибо.

Author: Marius, 2015-06-12

1 answers

$now = Mage::getSingleton('core/date')->gmtDate();
$this->_collection->addAttributeToFilter('special_to_date', array('or'=> array(
    0 => array('date' => true, 'from' => $now),
    1 => array('is' => new Zend_Db_Expr('null')))
 ), 'left')

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

[ РЕДАКТИРОВАТЬ]
Чтобы добавить фильтр для special_from_date, вы можете добавить его после кода выше

$this->_collection->addAttributeToFilter('special_from_date', array('or'=> array(
    0 => array('date' => true, 'to' => $now),
    1 => array('is' => new Zend_Db_Expr('null')))
), 'left') 
 4
Author: Marius, 2015-06-17 07:48:09