Magento 2:获取产品库存数量和其他库存信息

本文显示了如何在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());

希望这可以帮助。谢谢。

相关文章

0 0 投票数
文章评分
订阅评论
提醒
0 评论
内联反馈
查看所有评论