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

时间:2018-04-18 09:44:56

标签: php magento magento2 magento2.2

我试图获得所有产品。我是这样做的:

$objectManager->get('Magento\Catalog\Model\Product')
            ->getCollection()
            ->addAttributeToSelect('*');

但只返回简单的产品。

通过sku获取NOT RETURNED产品可以正常工作:

$p = $objectManager->create('\Magento\Catalog\Model\ProductRepository')->get($sku);

有什么想法吗? 提前谢谢。

- Magento 2.2.0版

2 个答案:

答案 0 :(得分:0)

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

$objectManager->get('\Magento\Catalog\Model\ProductFactory')->create()
        ->getCollection()
        ->addAttributeToSelect('*');

答案 1 :(得分:0)

试试这个

在您的阻止文件中

<?php
namespace Mageplaza\HelloWorld\Block;
class HelloWorld extends \Magento\Framework\View\Element\Template
{    
    protected $_productCollectionFactory;

    public function __construct(
        \Magento\Backend\Block\Template\Context $context,        
        \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $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>";
}

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

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