我是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)
有人可以帮我这样做吗?
这就是全部,谢谢!
答案 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!