0
我有一些Magento代碼,我試圖用來過濾一組產品。我想查找日期在某個日期之前或日期尚未設置(即爲空)的所有產品。如何過濾日期或null的Magento集合
我:
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',陣列( '零'=>真))
或
陣列( '屬性'=>「price_adjust_last_run ','null'=> true)
使用可以使用這樣 - > addAttributeToFilter( 'news_from_date',陣列( '或'=>數組( 0 =>數組( '日期'=>真, '至'=> $ todayEndOfDayDate) 1 => array('is'=> new Zend_Db_Expr('null'))) ),'left') – faizanbeg
您可以在此文件中找到代碼 app \ code \ core \ Mage \ Catalog \ Block \ Product \ New.php – faizanbeg