我試圖構建「現貨」或「可銷售」的所有可配置產品的產品集合。這些需要使用兩種不同的型號。我的工作方法是:Magento:構建庫存中所有可配置產品的定製產品集合
$collectionConfigurable = Mage::getResourceModel('catalog/product_collection')->addAttributeToFilter('type_id', array('eq' => 'configurable'));
foreach ($collectionConfigurable as $_configurableproduct) {
$product = Mage::getModel('catalog/product')->load($_configurableproduct->getId());
if ($product->isSaleable()) {
// do something
}
}
但是這個劇本實在是太慢了,我有一種感覺它浪費了資源運行,因爲它會加載並通過各種配置的產品去。
我想要實現的是獲得$ collectionConfigurable,並使其僅限於庫存項目。
另一種資源引用此作爲獲取庫存項目的方法。
Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection($this->_productCollection);
但我不知道如何將它們合併或正確地使用它,我已經試過這樣:
$collectionConfigurable = Mage::getResourceModel('catalog/product_collection')->addAttributeToFilter('type_id', array('eq' => 'configurable'));
$instockConfigs = Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection($collectionconfigurable);
這將返回與以下錯誤:
Fatal error: Call to a member function joinField() on a non-object in /srv/magento/app/code/core/Mage/CatalogInventory/Model/Resource/Stock.php on line 197
恥辱,他們沒有鍵入暗示([儘管他們可能在新版本(http://docs.magentocommerce.com/Mage_CatalogInventory/Mage_CatalogInventory_Model_Stock.html#addInStockFilterToCollection)) – 2013-05-02 06:29:33
@SteveRobbins傳統觀點它的類型提示帶來了性能開銷,特別是Magento的舊版PHP(5.2)目標。很容易明白爲什麼提供應用程序的團隊意味着廣泛部署會放棄類型提示以支持docblock提示。 – 2013-05-02 07:07:54