Magento 2 - getCollection 只返回简单的产品



我正在尝试获取所有产品。我这样做:

$objectManager->get('MagentoCatalogModelProduct')
            ->getCollection()
            ->addAttributeToSelect('*');

但只退回简单的产品。

通过SKU获取未退回的产品工作正常:

$p = $objectManager->create('MagentoCatalogModelProductRepository')->get($sku);

知道吗?提前谢谢。

--Magento 版本 2.2.0

Magento2有概念调用工厂,它是调用模型对象的后台。所以我认为你应该在调用对象模型之前新建工厂。

$objectManager->get('MagentoCatalogModelProductFactory')->create()
        ->getCollection()
        ->addAttributeToSelect('*');

试试这个

在块文件中

<?php
namespace MageplazaHelloWorldBlock;
class HelloWorld extends MagentoFrameworkViewElementTemplate
{    
    protected $_productCollectionFactory;
    public function __construct(
        MagentoBackendBlockTemplateContext $context,        
        MagentoCatalogModelResourceModelProductCollectionFactory $productCollectionFactory,        
        array $data = []
    )
    {    
        $this->_productCollectionFactory = $productCollectionFactory;    
        parent::__construct($context, $data);
    }
    public function getProductCollection()
    {
        $collection = $this->_productCollectionFactory->create();
        $collection->addAttributeToSelect('*');
        return $collection;
    }
}
?>

和您的 .phtml 文件

$productCollection = $block->getProductCollection();
foreach ($productCollection as $product) {
    print_r($product->getData());     
    echo "<br>";
}

它还提供了分组和可配置的产品它为我工作,请尝试这个

您也可以尝试此链接:https://www.mageplaza.com/how-get-product-collection-magento-2.html

最新更新