2

我是 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) 

有人可以帮我做到这一点吗?

就这些了,谢谢!

4

1 回答 1

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)' ); 

所以,我希望这对一些帅哥有帮助!

感恩图蒂!

于 2012-10-26T12:53:05.627 回答