过滤“is_salable”上的产品集合

时间:2011-03-14 17:04:32

标签: magento magento-1.4

我想过滤产品系列,只显示有库存的商品。我认为这很容易,因为有一个名为'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'不是答案,那么我需要做的就是过滤掉没有库存的产品...所以无论做什么都可以。)

谢谢!

3 个答案:

答案 0 :(得分:44)

产品中没有is_salable属性,因此会出现异常。如果您只想显示库存产品,请使用此库存模型addInStockFilterToCollection方法:

Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection($this->_productCollection);

答案 1 :(得分:0)

试试这个......

$stockCollection = Mage::getModel('cataloginventory/stock_item')->getCollection()->addFieldToFilter('qty', array('gteq' => 1))->addFieldToFilter('type_id', 'simple');
  

addFieldFilter('qty',array('gteq')   =→1))

获取库存为1或更高的所有产品系列,您可以根据需要在此处输入任何数字

  

addFieldToFilter('type_id','simple')

按简单产品过滤

答案 2 :(得分:0)

我偶然发现问题isSaleable()总是在我的产品上返回false,问题是我收到了集合但没有将属性价格添加到集合中。 在isSaleable()函数中有一个检查以确保价格不是0,它需要price属性来检查:

更改:

$collection = Mage::getModel('catalog/product')->getCollection();
        $collection->addAttributeToSelect('name')
                ->addAttributeToSelect('image')
                ->addAttributeToSelect('url_path')
                ->addAttributeToSelect('status')
                ->addUrlRewrite();

要:

$collection = Mage::getModel('catalog/product')->getCollection();
        $collection->addAttributeToSelect('name')
                ->addAttributeToSelect('image')
                ->addAttributeToSelect('price')
                ->addAttributeToSelect('url_path')
                ->addAttributeToSelect('status')
                ->addUrlRewrite();

诀窍:)