【发布时间】:2011-07-15 04:23:17
【问题描述】:
我想过滤产品集合以仅显示有货的商品。我认为这很容易,因为有一个名为“is_salable”的属性,如果有库存,则为 1(真),如果没有,则为 0(假)。但无论我做什么,它都不起作用。此外,它似乎会在查询完成之前停止执行。
这里有一些示例代码:
$this->_productCollection = Mage::getModel('catalog/product')->getCollection();
$this->_productCollection->addAttributeToSelect('*');
$this->_productCollection->addAttributeToFilter('my_attribute', true);
//So far, so good...filtering on 'my_attribute' works!
Mage::Log("select: " . $this->_productCollection->getSelect());
//Successfully outputs the SQL query
$this->_productCollection->addFieldToFilter('is_salable', '1');
Mage::Log("select: " . $this->_productCollection->getSelect());
//does NOT output any query...it's like it died trying
那么我做错了什么?我尝试了“addFieldToFilter”、“addAttributeToFilter”和其他其他查询,例如:addFieldToFilter('is_salable', array('eq' => true)) 等...
有人知道怎么做吗?如果“is_salable”不是答案,我需要做的就是过滤掉没有库存的产品......所以无论做什么都可以:)
谢谢!
【问题讨论】:
-
快速提示:有时无法正确转储选择对象,至少在内存不足的情况下无法正确转储。将其转换为字符串更可靠...
(string)$this->getProductCollection()->getSelect() -
__toString()方法在与字符串连接时会自动被调用(自 PHP 5.2 起,请参阅 the docs) -
@jongosi 实际上函数名称是
isSalable,如 Mage_Catalog_Model_Product 中所定义,因此您的评论不正确。
标签: magento magento-1.4