php - 从子 SKU Magento 2 获取父 SKU(可配置或捆绑)
问题描述
在订单页面(后端)上,我需要能够使用子 SKU 获取父 SKU。
我已经尝试了从 Magento 论坛和 StackOverflow 上的类似问题中截取的几个代码,但没有成功。
我可以通过使用来确定产品是否只是没有父级的简单产品,getTypeId()
但之后我尝试的一切都未能导致获得父级 SKU。
Magento 2.2.6
解决方案
configurable、bundle 和 grouped 都是不同的,需要不同的方式来获取它们的父级。这些方法在相关文件中列出。
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")
);
推荐阅读
- vue.js - 为什么在 Vue 中使用模态时我的 v-if 不触发?
- python - 如何以 Viewclass 作为按钮从 RecycleView 获取实例?
- java - 方法中类型参数的限制
- javascript - 我怎样才能让我的模糊动画每次都能更快地工作?
- css - 如何更改css模态框图形显示宽度?
- python - 为什么队列是查找最近呼叫数量的最佳方法?【Leetcode问题】
- database - 视图 VS 物化视图
- php - 删除用户函数 SQL 查询不发送任何内容 (PHP)
- angular - 如何修复类型错误不是角度的函数
- python-3.x - 在 python 上运行 .sh 脚本