2011-11-08 49 views
4

我使用这个代码,我在什么地方找到我的所有活动的特殊产品:如何比较Magento查询中的两个字段?

$collection = $this->_addProductAttributesAndPrices($collection) 
->addStoreFilter() 
->addAttributeToFilter('special_from_date', array('date' => true, 'to' => $todayDate)) 
->addAttributeToFilter('special_to_date', array('or'=> array(
    0 => array('date' => true, 'from' => $todayDate), 
    1 => array('is' => new Zend_Db_Expr('null'))) 
), 'left') 
->setPageSize($this->get_prod_count()) 
->setCurPage($this->get_cur_page()); 

现在,我想只有有一个特殊的价格< =价格的产品,但是我仍然可以”不知道该怎么做。

我一直在阅读此页:http://www.magentocommerce.com/wiki/5_-_modules_and_development/catalog/using_collections_in_magento

,我想这没有成功:

 ->addAttributeToFilter('special_price', array('lt' => 'price')) 

感谢您的帮助!

+0

第二参数 '价格' 是被视为字符串 – Nasaralla

+0

这是正确的,这就是为什么我问,我不知道比较这些值的正确方法 – Shaz

回答

6

你可以试试this,感谢Zyava!

在我的情况下:

- > addAttributeToFilter( '价格',阵列( 'GT'=>新Zend_Db_Expr( 'final_price')))

0

一个鲜为人知高效的解决方案是通过收集迭代,

$products = array(); 
$collection = Mage::getResourceModel('catalog/product_collection'); 
foreach($collection as $col) { 
    $product = Mage::getModel('catalog/product')->load($col->getId()); 
    if($product->getPrice() > $product->getSpecialPrice()) { 
     $products[] = $product; 
    } 
} 

你将有一个产品到底数组...