如何找出简单产品的主产品?

时间:2010-05-17 07:01:17

标签: php magento

如果一个简单的产品是可配置产品的一部分然后获得主产品,我怎么能知道?我需要这个产品列表。

刚刚发现:

$_product->loadParentProductIds();
$parentIds = $_product->getParentProductIds();

3 个答案:

答案 0 :(得分:5)

假设您拥有简单产品的产品ID。

要获取此简单产品的所有父可配置产品ID,请使用以下代码: -

<?php
$_product = Mage::getModel('catalog/product')->load(YOUR_SIMPLE_PRODUCT_ID);
$parentIdArray = $_product->loadParentProductIds()
                 ->getData('parent_product_ids');
if(!empty($parentIdArray)) {
    // currently in the master configurable product
    print_r($parentIdArray); // this prints all the parent product IDs using your simple product.
}
?>

我想这应该让你去。

答案 1 :(得分:4)

在版本1.4.2.0之后,不推荐使用loadParentProductIds()getParentProductIds()方法。不要问我为什么。我个人喜欢那些方法。所以我把它们重新引入我当地的Mage课程。这是如何: 复制

app/code/core/Mage/Catalog/Model/Product.php

app/code/local/Mage/Catalog/Model/Product.php

并将第{13}行附近的loadParentProductIds()方法更改为:

public function loadParentProductIds()
{
        return $this->_getResource()->getParentProductIds($this);
}

这段代码将查询其资源以查找其父产品ID。为此,我们需要重写资源类中的getParentProductIds()方法。

所以复制:

app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product.php

app/code/local/Mage/Catalog/Model/Resource/Eav/Mysql4/Product.php

查找已弃用的getParentProductIds()方法。应该在第535行附近。用1.4.2.0之前的代码覆盖它:

public function getParentProductIds($object){
    $childId = $object->getId();
    $groupedProductsTable = $this->getTable('catalog/product_link');
    $groupedLinkTypeId = Mage_Catalog_Model_Product_Link::LINK_TYPE_GROUPED;
    $configurableProductsTable = $this->getTable('catalog/product_super_link');

    $groupedSelect = $this->_getReadAdapter()->select()
        ->from(array('g'=>$groupedProductsTable), 'g.product_id')
        ->where("g.linked_product_id = ?", $childId)
        ->where("link_type_id = ?", $groupedLinkTypeId);

    $groupedIds = $this->_getReadAdapter()->fetchCol($groupedSelect);

    $configurableSelect = $this->_getReadAdapter()->select()
        ->from(array('c'=>$configurableProductsTable), 'c.parent_id')
        ->where("c.product_id = ?", $childId);

    $configurableIds = $this->_getReadAdapter()->fetchCol($configurableSelect);
    return array_merge($groupedIds, $configurableIds);
}

现在你再次可以做到这一点:

$_product->loadParentProductIds()->getData('parent_product_ids');

希望这会帮助你!

答案 2 :(得分:4)

对于Magento 1.4.2及更高版本,请改用以下方法:

$configurable_product_model = Mage::getModel(‘catalog/product_type_configurable’);
$parentIdArray = $configurable_product_model->getParentIdsByChild($simple_product_id);