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

时间:2012-07-14 01:00:56

标签: magento

在购物车页面上,我需要能够使用子SKU获取父SKU。

我已尝试从Magento论坛和StackOverflow上的类似问题中剪切了几个代码但没有成功。

我可以通过使用getTypeId()来确定产品是否只是一个没有父项的简单产品,但之后我尝试的所有内容都无法获得父SKU。

Magento版本:1.4.2.0

1 个答案:

答案 0 :(得分:12)

查看Mage_Catalog_Model_Product_Type_Configurable和Mage_Bundle_Model_Product_Type类。他们有获得父母和儿童产品的有用方法。你想要getParentIdsByChild():

对于可配置产品:

$parent_ids = Mage::getModel('catalog/product_type_configurable')->getParentIdsByChild($childId);

对于捆绑产品:

$parent_ids = Mage::getModel('bundle/product_type')->getParentIdsByChild($childId);

这些仅适用于ID。您需要将子SKU转换为id,然后将父ID转换回SKU。从SKU获取id的简单方法是:

Mage::getModel('catalog/product')->getIdBySku($sku);

此外,您可以拥有多个父ID,因此您必须了解这一点。这是一个例子:

$child_id = Mage::getModel('catalog/product')->getIdBySku($child_sku);
$parent_ids = Mage::getModel('catalog/product_type_configurable')->getParentIdsByChild($child_id);
$parent_collection = Mage::getResourceModel('catalog/product_collection')
    ->addFieldToFilter('entity_id', array('in'=>$parent_ids))
    ->addAttributeToSelect('sku');
$parent_skus = $parent_collection->getColumnValues('sku');