Magento2 如何从可配置产品获取子产品ID

Magento2 如何从可配置产品获取子产品ID,magento2,Magento2,我正在尝试从可配置的产品ID获取所有子产品ID $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $product = $objectManager->create('\Magento\Catalog\Model\Product'); $storeManager = $this->_objectManager->get('Magento\Store\

我正在尝试从可配置的产品ID获取所有子产品ID

$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();
}
在所有情况下,我都会获得第一个可配置产品的ID


$\u children=$\u product->getTypeInstance()->getUsedProducts($\u product);
foreach($\子对象作为$child){
$childProducts[]=$child;
}


$\u product是可配置的产品对象

$\u children=$\u product->getTypeInstance()->getUsedProducts($\u product);
foreach($\子对象作为$child){
$childProducts[]=$child;
}


$\u product是可配置的产品对象

您可以使用以下代码获取子ID

$product = $block->getProduct();
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$configurable_product_id = $product->getId();
$configurableProduct = $objectManager->get('Magento\Catalog\Model\ProductRepository')->getById($configurable_product_id);

$children = $configurableProduct->getTypeInstance()->getUsedProducts($configurableProduct);       $childIds = array();
foreach ($children as $child){
  $childIds[] = $child->getId();
}
sort($childIds);
print_r($childIds);

这是示例代码,但我建议不要直接使用
$objectManage
r,您可以使用Block-on-Plugin方法获取产品对象。

您可以使用下面的代码获取子ID

$product = $block->getProduct();
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$configurable_product_id = $product->getId();
$configurableProduct = $objectManager->get('Magento\Catalog\Model\ProductRepository')->getById($configurable_product_id);

$children = $configurableProduct->getTypeInstance()->getUsedProducts($configurableProduct);       $childIds = array();
foreach ($children as $child){
  $childIds[] = $child->getId();
}
sort($childIds);
print_r($childIds);

这是示例代码,但我建议不要直接使用
$objectManage
r,您可以使用Block-on-Plugin方法获取产品对象。

要从可配置产品获取子产品ID,您可以使用以下代码:

 public function __construct(
        \Magento\Catalog\Api\ProductRepositoryInterface $productRepository
    ) {
        $this->productRepository = $productRepository;
    }


    public function execute()
    { 
        $_productId=57786;
        $_product=$this->productRepository->getById($_productId);
        $childIs=$_product->getExtensionAttributes()->getConfigurableProductLinks();

        print_r($childIs);
    }
输出如下所示:

Array
(
    [31981] => 31981
    [31982] => 31982
    [31983] => 31983
)

希望它能帮助您。

要从可配置产品中获取子产品ID,您可以使用以下代码:

 public function __construct(
        \Magento\Catalog\Api\ProductRepositoryInterface $productRepository
    ) {
        $this->productRepository = $productRepository;
    }


    public function execute()
    { 
        $_productId=57786;
        $_product=$this->productRepository->getById($_productId);
        $childIs=$_product->getExtensionAttributes()->getConfigurableProductLinks();

        print_r($childIs);
    }
输出如下所示:

Array
(
    [31981] => 31981
    [31982] => 31982
    [31983] => 31983
)
希望它能帮助你