Как получить идентификаторы дочерних продуктов из настраиваемого продукта - PullRequest
0 голосов
/ 27 декабря 2018

Я пытаюсь получить все дочерние идентификаторы продуктов из настраиваемых идентификаторов продуктов.

$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); 
        $product = $objectManager->create('\Magento\Catalog\Model\Product');



        $storeManager = $this->_objectManager->get('Magento\Store\Model\StoreManagerInterface'); 
        $currentStore = $storeManager->getStore();
        $mediaUrl = $currentStore->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);
        $productURL = $mediaUrl.'catalog/product';
        $collection = $this->_productCollectionFactory->create();
        $productCollection = $collection->addAttributeToSelect('*')->addAttributeToFilter('type_id','configurable');
        $vendor_product = array();

        $productData = $product->getData();
        foreach($productCollection as $prodObj){
            $productData = array();
            $product = $product->load($prodObj->getId());

                     $productTypeInstance = $product->getTypeInstance();
            $usedProducts = $productTypeInstance->getUsedProducts($product);

 foreach ($usedProducts  as $child) {
$productData['childrenIds'][] = $child->getId();
}

Я получаю идентификаторы моего первого конфигурируемого продукта во всех случаях

1 Ответ

0 голосов
/ 28 декабря 2018
<?php

namespace Vendor\Module\Block;


class ParentAndChilds extends \Magento\Framework\View\Element\Template
{

    /**
    * @var Context
    */

    protected $context;

    /**
    * @var ProductRepositoryInterface
    */

    protected $productRepository;

    /**
    * @var SearchCriteriaBuilder
    */

    protected $searchCriteriaBuilder;

    /**
     * @var LinkManagementInterface
     */

    protected $linkManagement;


    public function __construct(
        \Magento\Framework\View\Element\Template\Context $context,
        \Magento\ConfigurableProduct\Api\LinkManagementInterface $linkManagement,
        \Magento\Catalog\Api\ProductRepositoryInterface $productRepository,
        \Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder,
        array $data = []

    )
    {
        $this->linkManagement = $linkManagement;
        $this->productRepository = $productRepository;
        $this->searchCriteriaBuilder = $searchCriteriaBuilder;
        parent::__construct($context, $data);
    }



    public function getParentsAndChilds() 
    {
            $searchCriteria = $this->searchCriteriaBuilder
                ->addFilter('type_id', 'configurable')
                ->create();

            $configurableProducts = $this->productRepository
                ->getList($searchCriteria);

            $parentAndChildProducts = array();
            foreach ($configurableProducts->getItems() as $configurableProduct) {
                $childProducts = $this->linkManagement
                    ->getChildren($configurableProduct->getSku());

                foreach ($childProducts as $childProduct) {
                    $parentAndChildProducts[$configurableProduct->getId()][] = $childProduct->getId();
                }
            }

            return $parentAndChildProducts;
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...