在订单页面(后端)上,我需要能够使用子SKU获得父SKU。
我已经尝试了从Magento论坛和此处类似的问题在StackOverflow上摘录的几个代码,但均未成功。
通过使用getTypeId()
,我可以确定某个产品是否只是没有父项的简单产品,但是此后,我尝试执行的所有操作均无法获得父项SKU。
Magento 2.2.6
答案 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")
);