Получить родительское имя продукта из дочернего продукта


У меня есть модель продукта из модели товара заказа, которую я называю так:

$product = $orderItem->getProduct();

Проблема в том, что один из элементов заказа является дочерним продуктом из настраиваемого продукта, мне нужно получить родительское имя из этого продукта, есть ли способ это сделать?

Author: simple guy, 2018-02-20

3 answers

Попробуйте этот код:

$productId = 1; //this is child product id
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$product = $objectManager->create('Magento\ConfigurableProduct\Model\ResourceModel\Product\Type\Configurable')->getParentIdsByChild($productId);
if(isset($product[0])){
  $product = $objectManager->create('Magento\Catalog\Model\Product')->load($product[0]);
    echo $product->getName();
}
 2
Author: Jsparo30, 2018-02-20 08:22:24

Используйте этот код:

protected $_catalogProductTypeConfigurable;

 public function __construct(
    \Magento\Catalog\Block\Product\Context $context,       
    //for getting parent id of simple
    \Magento\ConfigurableProduct\Model\ResourceModel\Product\Type\Configurable $catalogProductTypeConfigurable,
    array $data = []
) {
    //for getting parent id of simple
    $this->_catalogProductTypeConfigurable = $catalogProductTypeConfigurable;
    parent::__construct($context, $data);
}
public function getProductData($id){
    $productId = $orderItem->getProduct()->getId();
    $parentByChild = $this->_catalogProductTypeConfigurable->getParentIdsByChild($productId);
    if(isset($parentByChild[0])){
        //set id as parent product id...
        $id = $parentByChild[0];          
    }
    return $id;     
}

В качестве альтернативы вы также можете использовать это:

$productId = $orderItem->getProduct()->getId(); //this is child product id
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$product = $objectManager->create('Magento\ConfigurableProduct\Model\ResourceModel\Product\Type\Configurable')->getParentIdsByChild($productId);
 if(isset($product[0])){
     //this is parent product id..
     echo $product[0];
}
 1
Author: Manish Joy, 2018-02-20 07:59:07

$orderItem->getName() следует вернуть имя родителей для настраиваемого продукта.

 0
Author: steros, 2018-02-20 07:54:09