У меня есть код Magento, который я пытаюсь использовать для фильтрации коллекции продуктов. Я хочу найти все продукты, в которых дата предшествует определенной дате, или дата не была установлена (т.е. равна нулю).Как фильтровать коллекцию Magento для даты или null
у меня есть:
function getProduct($product_id) {
\t global $proxy, $sessionId, $conn, $start_date, $time_to_run;
\t if ($product_id == 'all') {
\t \t $result=Mage::getModel("catalog/product")
\t \t ->getCollection()
\t \t ->addAttributeToSelect('*')
->addAttributeToFilter('price_adjust_active', array('null' => true))
\t \t ->addAttributeToFilter('price_adjust_active', '1')
\t \t ->addAttributeToFilter(array(
array('attribute'=> 'price_adjust_last_run','lt' => date('Y-m-d H:i:s', $time_to_run)),
array('attribute'=> 'price_adjust_last_run', 'null' => true)
))
\t \t ->addAttributeToFilter('status', array('eq' => Mage_Catalog_Model_Product_Status::STATUS_ENABLED))
\t \t ->setOrder('entity_id', 'DESC')
\t \t ->setPageSize(1);
} else {
\t
\t \t $result=Mage::getModel("catalog/product")
\t \t ->getCollection()
\t \t ->addAttributeToSelect('*')
\t \t ->addAttributeToFilter('entity_id', array('eq' => $product_id))
->addAttributeToFilter('price_adjust_active', array('null' => true))
\t \t ->addAttributeToFilter('price_adjust_active', '1')
\t \t ->addAttributeToFilter(array(
array('attribute'=> 'price_adjust_last_run','lt' => date('Y-m-d H:i:s', $time_to_run)),
array('attribute'=> 'price_adjust_last_run', 'null' => true)
))
\t \t ->addAttributeToFilter('status', array('eq' => Mage_Catalog_Model_Product_Status::STATUS_ENABLED))
\t \t ->setOrder('entity_id', 'DESC')
\t \t ->setPageSize(1);
\t } \t
и я могу успешно отфильтровывать продукты с датами, установленными до моего указанной даты. Я просто не могу заставить атрибут «null» работать. Как вы можете видеть из моего кода, у меня есть два разных фильтра, и ни один из них не дает мне желаемых результатов.
Две дефектные попытки:
-> addAttributeToFilter ('price_adjust_active', массив ('NULL' => правда))
или
массив ('атрибут' => «price_adjust_last_run ',' null '=> true)
использование может использовать как этот -> addAttributeToFilter ('news_from_date', массив ('или' => массив ( 0 => Array ('дата' => верно, 'до' => $ todayEndOfDayDate), 1 => array ('is' => new Zend_Db_Expr ('null'))) ), 'left') – faizanbeg
Вы можете найти код в этом файле app \ code \ core \ Mage \ Catalog \ Block \ Product \ New.php – faizanbeg