Magento 2 - 如何获取所有库存产品的数量
Magento 2 - How do get the quantity of all products in stock
我想要所有类别的所有可用产品的总数量。我知道有 ->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;
是否有一种简单明了的方法来获取库存中所有活跃产品的总和?谢谢
没有按类别执行此操作的“内置”方法。如果你想计算启用的产品,但只针对某些类别,你可以使用这样的东西:
在你的结构中:
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();
}
这样您就可以获得可用的产品属性数据,因此您可以处理每个产品的个性。对于您的用例,您可以完全省略类别,因为您希望整个产品计数使用
$sum = 0;
$product_collection = $this->_productCollectionFactory->create();
$product_collection ->addAttributeToFilter('status',\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED);
$sum = $product_collection->count();
我想要所有类别的所有可用产品的总数量。我知道有 ->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;
是否有一种简单明了的方法来获取库存中所有活跃产品的总和?谢谢
没有按类别执行此操作的“内置”方法。如果你想计算启用的产品,但只针对某些类别,你可以使用这样的东西:
在你的结构中:
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();
}
这样您就可以获得可用的产品属性数据,因此您可以处理每个产品的个性。对于您的用例,您可以完全省略类别,因为您希望整个产品计数使用
$sum = 0;
$product_collection = $this->_productCollectionFactory->create();
$product_collection ->addAttributeToFilter('status',\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED);
$sum = $product_collection->count();