Magento(CE 1.3) - 过滤productCollection,库存数量为0

Bob*_*ing 3 filter magento magento-1.3

Magento 1.3

我正在尝试过滤productCollection中的缺货商品.使用:

 ->addAttributeToFilter('status',array('neq' => Mage_Catalog_Model_Product_Status::STATUS_DISABLED))
Run Code Online (Sandbox Code Playgroud)

我可以按状态过滤,但在此商店中,已启用的产品仍可以有0个数量.

使用:

->addAttributeToFilter('qty', array('gt' => 0))
Run Code Online (Sandbox Code Playgroud)

返回'qty'不是属性错误.

$this->_productCollection = $this->_productCollection->addAttributeToSelect('*')
                            ->setStoreId($storeId)
                            ->addStoreFilter($storeId)
                            ->addAttributeToFilter('status',array('neq' => Mage_Catalog_Model_Product_Status::STATUS_DISABLED))                              
                            ->setPageSize($this->getToolbarBlock()->getLimit());
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢.

Jür*_*len 9

你可以使用这样的东西:

$oCollection = Mage::getModel('catalog/product')
->getCollection()
->joinField(
    'qty',
    'cataloginventory/stock_item',
    'qty',
    'product_id=entity_id',
    '{{table}}.stock_id=1',
    'left'
)
->addAttributeToFilter('qty', array('eq' => 0));
Run Code Online (Sandbox Code Playgroud)

如果您根本不需要catalog/product数据(产品ID除外),但只想知道哪些产品ID通常为零,您还可以使用:

$oCollection = Mage::getModel('cataloginventory/stock_item')
->getCollection()
->addQtyFilter('=', 0);
Run Code Online (Sandbox Code Playgroud)