is_in_stock filtro não funciona
-
12-12-2019 - |
Pergunta
Eu estou fazendo um Mage::getModel
chamada para tentar obter todos os produtos de uma determinada categoria que está em estoque.
$stockIds = Mage::getModel('cataloginventory/stock_item')
->getCollection()
->addQtyFilter('<=',1)
->addFieldToFilter('is_in_stock', 1)
->getAllIds();
$_productCollection=Mage::getModel('catalog/category')
->load(51)
->getProductCollection()
->addIdFilter($stockIds)
->addAttributeToSelect('*')
->setPageSize(10)->setCurPage(1);
Tudo o que funciona para além do ->addFieldToFilter('is_in_stock', 1)
linha.Sem ele, todos os produtos da categoria de mostrar-se.Com ele, é a filtragem de alguns (aparentemente aleatória) produtos, mas não com base em se é "Em estoque".Alguns fora-de-estoque de itens ainda aparece, e alguns itens em estoque não aparecem.
Tenho verificado que todos os produtos estão habilitados e todas as quantidades são, pelo menos, 10.
Como faço para obter todos os produtos de uma determinada categoria que está no estoque?
Solução
primeiro,$stockIds
não devolver o product ids
,ela dá o estoque de identificação,basicamente, de ações chave primária da tabela.Se você deseja filter product collection by saleable
em seguida, você precisa utilizar o código abaixo:
Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection($_productCollection)