como obter o status do estoque sem carregar todo o produto de maneira eficiente
-
13-12-2019 - |
Pergunta
Eu tenho o sku a página e eu quero ver se o produto está em estoque ou no estoque e fazer o que eu tenho feito isso:
$firstProductId = Mage::getSingleton('catalog/product')->getIdBySku('mysku');
$product = Mage::getModel('catalog/product');
$product->setId($firstProductId);
$inStock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($product)->getIsInStock();
Eu quero saber se eu posso realizar isso sem carregar todo o produto de qualquer outro modo que é mais eficiente ou estou no caminho certo?
Solução
Você pode usar esse código que dar de ações de forma mais rápida utilizando o id do produto
$model=Mage::getModel('cataloginventory/stock_item');
$model->getResource()->loadByProductId($model, $productId);
$data=$model->setOrigData();
echo "<pre>";
print_r($data->getData());
Fora é uma matriz
Um exemplo:
Array
(
[item_id] => 1868
[product_id] => 889
[stock_id] => 1
[qty] => 5000.0000
[min_qty] => 0.0000
[use_config_min_qty] => 1
[is_qty_decimal] => 0
[backorders] => 0
[use_config_backorders] => 1
[min_sale_qty] => 1.0000
[use_config_min_sale_qty] => 1
[max_sale_qty] => 0.0000
[use_config_max_sale_qty] => 1
[is_in_stock] => 1
[low_stock_date] =>
[notify_stock_qty] =>
[use_config_notify_stock_qty] => 1
[manage_stock] => 0
[use_config_manage_stock] => 1
[stock_status_changed_auto] => 0
[use_config_qty_increments] => 1
[qty_increments] => 0.0000
[use_config_enable_qty_inc] => 1
[enable_qty_increments] => 0
[is_decimal_divided] => 0
[type_id] => simple
[stock_status_changed_automatically] => 0
[use_config_enable_qty_increments] => 1
)
Outras dicas
Tente isso
$firstProductId = Mage::getSingleton('catalog/product')->getIdBySku('mysku');
$inStock = Mage::getModel('cataloginventory/stock_item')->getCollection()->addFieldToFilter('product_id', $firstProductId)->getFirstItem()
Isso deve fazer o truque.
Embora, não sei como eficiente seria, mas pode confirmar que é este magento forma.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange