Magento2 如何从可配置产品获取子产品ID
我正在尝试从可配置的产品ID获取所有子产品IDMagento2 如何从可配置产品获取子产品ID,magento2,Magento2,我正在尝试从可配置的产品ID获取所有子产品ID $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $product = $objectManager->create('\Magento\Catalog\Model\Product'); $storeManager = $this->_objectManager->get('Magento\Store\
$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
)
希望它能帮助你