今天,教您一种简单的方法来获取 Magento 2 中的父级产品:捆绑和打包产品。捆绑和打包产品是您可以从 Magento 2 商店的后端创建的两种产品类型,并且他们包含一些子产品。你是否想知道,能否通过你持有子产品的 ID 来获取到父级产品的 ID 。你将会在本文中找到答案,让我们从以下每种产品类型的代码段来开始学习吧。
捆绑产品
找到 Magento\Bundle\Model\Product\Type,有两个函数:
/**
* Retrieve Required children ids
* Return grouped array, ex array(
* group => array(ids)
* )
*
* @param int $parentId
* @param bool $required
* @return array
*/
public function getChildrenIds($parentId, $required = true)
{
return $this->_bundleSelection->getChildrenIds($parentId, $required);
}
/**
* Retrieve parent ids array by required child
*
* @param int|array $childId
* @return array
*/
public function getParentIdsByChild($childId)
{
return $this->_bundleSelection->getParentIdsByChild($childId);
}
Configurable product: You can see the class Magento\ConfigurableProduct\Model\Product\Type\Configurable, it also has two functions:
/**
* Retrieve Required children ids
* Return grouped array, ex array(
* group => array(ids)
* )
*
* @param array|int $parentId
* @param bool $required
* @return array
*/
public function getChildrenIds($parentId, $required = true)
{
return $this->_catalogProductTypeConfigurable->getChildrenIds($parentId, $required);
}
/**
* Retrieve parent ids array by required child
*
* @param int|array $childId
* @return array
*/
public function getParentIdsByChild($childId)
{
return $this->_catalogProductTypeConfigurable->getParentIdsByChild($childId);
}
打包产品
找到 Magento\GroupedProduct\Model\Product\Type\Grouped:
/**
* Retrieve Required children ids
* Return grouped array, ex array(
* group => array(ids)
* )
*
* @param int $parentId
* @param bool $required
* @return array
*
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function getChildrenIds($parentId, $required = true)
{
return $this->productLinks->getChildrenIds(
$parentId,
\Magento\GroupedProduct\Model\ResourceModel\Product\Link::LINK_TYPE_GROUPED
);
}
/**
* Retrieve 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
);
}
在上述类中引用的两个函数是 getChildrenIds 和 getParentIdsByChild,通过这种方式,先决条件是定义产品类型,可以使用以下代码来加载产品并声明函数 getTypeInstance :
$product->getTypeInstance()->getParentIdsByChild($child->getId());