从子SKU Magento 2获取父SKU(可配置或捆绑)

时间:2019-07-05 00:58:50

标签: php magento2

在订单页面(后端)上,我需要能够使用子SKU获得父SKU。

我已经尝试了从Magento论坛和此处类似的问题在StackOverflow上摘录的几个代码,但均未成功。

通过使用getTypeId(),我可以确定某个产品是否只是没有父项的简单产品,但是此后,我尝试执行的所有操作均无法获得父项SKU。

Magento 2.2.6

1 个答案:

答案 0 :(得分:0)

可配置,捆绑和分组均不同,并且需要不同的方式来获取其父母。方法在相关文件中列出。

Magento \ ConfigurableProduct \ Model \ Product \ Type \ Configurable.php

/** 
* Retrieve configurable parent ids array by required child
*
* @param  int|array $childId
* @return array
*/
public function getParentIdsByChild($childId)
{
   return $this->_catalogProductTypeConfigurable->getParentIdsByChild($childId);
} 

Magento \ Bundle \ Model \ Product \ Type.php

/**
* Retrieve bundle parent ids array by required child
*
* @param int|array $childId
* @return array
*/
public function getParentIdsByChild($childId)
{
   return $this->_bundleSelection->getParentIdsByChild($childId);
}

Magento \ GroupedProduct \ Model \ Product \ Type \ Grouped.php

/**
* Retrieve grouped parent ids array by requested child
*
* @param int|array $childId
* @return array
*/
public function getParentIdsByChild($childId)
{
   return $this->productLinks->getParentIdsByChild(
       $childId,
       \Magento\GroupedProduct\Model\ResourceModel\Product\Link::LINK_TYPE_GROUPED
  );
}

最后,以防万一您需要从mysql快速获取sku。

#Select parent of a sku
 SELECT
  parent.sku
FROM
  catalog_product_entity parent
WHERE parent.row_id =
  (SELECT
    relationship.parent_id
  FROM
    catalog_product_super_link relationship
  WHERE relationship.product_id =
    (SELECT
      child.entity_id
    FROM
      catalog_product_entity child
    WHERE child.sku = "SKU")
  );