本文显示了如何在Magento 2中获取产品的库存数量(qty)。我们还可以获取其他库存信息,例如最小数量(min_qty),最小销售数量(min_sale_qty),最大销售数量(max_sale_qty),看看是否有产品有库存(is_in_stock),等等。
我们将使用Magento 2的服务层执行此任务。Magento强烈鼓励使用服务层。
以下是我的自定义模块(Chapagain_HelloWorld)的块类。我在模块的块类的构造函数中注入了\ Magento \ CatalogInventory \ Model \ Stock \ StockItemRepository类的对象。
app / code / Chapagain / HelloWorld / Block / HelloWorld.php
<?php
namespace Chapagain\HelloWorld\Block;
class HelloWorld extends \Magento\Framework\View\Element\Template
{
protected $_stockItemRepository;
public function __construct(
\Magento\Backend\Block\Template\Context $context,
\Magento\CatalogInventory\Model\Stock\StockItemRepository $stockItemRepository,
array $data = []
)
{
$this->_stockItemRepository = $stockItemRepository;
parent::__construct($context, $data);
}
public function getStockItem($productId)
{
return $this->_stockItemRepository->get($productId);
}
}
?>
现在,我们通过id和sku将产品加载到模板文件中。
$id = YOUR_PRODUCT_ID;
$productStock = $block->getStockItem(1225);
//print_r($productStock->getData());
echo $productStock->getQty(); echo '<br />';
echo $productStock->getMinQty(); echo '<br />';
echo $productStock->getMinSaleQty(); echo '<br />';
echo $productStock->getMaxSaleQty(); echo '<br />';
echo $productStock->getIsInStock(); echo '<br />';
使用对象管理器
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$appState = $objectManager->get('\Magento\Framework\App\State');
$appState->setAreaCode('frontend');
$stockItem = $objectManager->get('\Magento\CatalogInventory\Model\Stock\StockItemRepository');
$id = 1; // YOUR PRODUCT ID
$productStock = $stockItem->get($id);
var_dump($productStock->getData());
希望这可以帮助。谢谢。