Magento2 Magento 2-如何获得所有库存产品的数量

Magento2 Magento 2-如何获得所有库存产品的数量,magento2,magento-2.3,Magento2,Magento 2.3,我想要所有种类的所有可用产品的总数量。我知道有->getStockItem()->getQty(),但这只适用于每个产品,而不是所有产品 现在,我循环分类并统计产品,但不活跃的产品也会被统计: $sum = 0; for($i=3; $i <= 18; $i++) { $categoryI = $categoryFactory->create()->load($i); echo $categoryI

我想要所有种类的所有可用产品的总数量。我知道有
->getStockItem()->getQty()
,但这只适用于每个产品,而不是所有产品

现在,我循环分类并统计产品,但不活跃的产品也会被统计:

        $sum = 0;
        for($i=3; $i <= 18; $i++) {
            $categoryI = $categoryFactory->create()->load($i);
            echo $categoryI->getProductCount();
            $sum+= $categoryI->getProductCount();
            echo ' ';
        }
        echo 'Summe: ';
        echo $sum;
$sum=0;
对于($i=3;$i create()->加载($i);
echo$categoryI->getProductCount();
$sum+=$categoryI->getProductCount();
回声';
}
回声“Summe:”;
echo$sum;
是否有一种简单、干净的方法来获取所有库存活动产品的总和?谢谢,没有按类别“内置”的方法。如果您想计算启用的产品,但仅限于某些类别,您可以使用以下方法:

在您的构造中:

protected $_productCollectionFactory;

public function __construct(
    // ...
    \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory,
    // ...
) {
    // ...
    $this->_productCollectionFactory = $productCollectionFactory;
    // ...
}
$sum = 0;
for($i=3; $i <= 18; $i++) {
    $product_collection = $this->_productCollectionFactory->create();
    $product_collection ->addCategoryFilter($category);
    $product_collection ->addAttributeToFilter('status',\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED);
    $sum += $product_collection->count();
}
在您的功能中:

protected $_productCollectionFactory;

public function __construct(
    // ...
    \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory,
    // ...
) {
    // ...
    $this->_productCollectionFactory = $productCollectionFactory;
    // ...
}
$sum = 0;
for($i=3; $i <= 18; $i++) {
    $product_collection = $this->_productCollectionFactory->create();
    $product_collection ->addCategoryFilter($category);
    $product_collection ->addAttributeToFilter('status',\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED);
    $sum += $product_collection->count();
}