Magento:addAttributeToFilter上的减法和除法

时间:2012-10-23 11:46:26

标签: mysql magento-1.7

我是Magento getResourceModel的新手,我正在尝试为我的查询添加一个简单的过滤器,但我无法用getResourceModel来计算。

原始查询:

$collection = Mage::getResourceModel('catalog/product_collection');
Mage::getModel('catalog/layer')->prepareProductCollection($collection);
$collection->addAttributeToFilter('promotion', 1)->setOrder('price', 'desc');

我只想添加where子句:

 (`price` - `final_price`) >= (`price` * 0.4) 

有人可以帮我这样做吗?

这就是全部,谢谢!

1 个答案:

答案 0 :(得分:2)

所以最后我找到了正确的方法来做到这一点,很抱歉推迟在这里发布答案并感谢@feeela。

查看文件/lib/Zend/Db/Select.php我发现存在where函数:

public function where($cond, $value = null, $type = null)
{
  $this->_parts[self::WHERE][] = $this->_where($cond, $value, $type, true);

  return $this;
}

所以,我们需要的只是添加对此函数的调用,给出我们想要的条件。在我的情况下,我只是添加一个条件来过滤具有40%折扣的产品。

$collection = Mage::getResourceModel('catalog/product_collection');
Mage::getModel('catalog/layer')->prepareProductCollection($collection);
$collection->addAttributeToFilter('promotion', 1)
           ->addStoreFilter();
$collection->getSelect()->where( '(`price` - `final_price`) >= (`price` * 0.4)' ); 

所以,我希望这对一些家伙有帮助!

Grazie tutti!