如何在magento中获取父产品ID?

问题描述 投票:0回答:6

我知道在 Magento 1.4.2.0 中,人们会像这样获得父 ID

list( $parentId ) = Mage::getModel('catalog/product_type_configurable')
                            ->getParentIdsByChild( $product->getId() );

我的问题是:如果我不知道父级是什么,我怎么知道使用 'catalog/product_type_configurable' 与 'catalog/product_type_grouped' 模型来获取 id?

php magento magento-1.4
6个回答
36
投票

您可以同时致电两者并提供后备方案,因为它应该是其中之一:

if($product->getTypeId() == "simple"){
    $parentIds = Mage::getModel('catalog/product_type_grouped')->getParentIdsByChild($product->getId());
    if(!$parentIds)
        $parentIds = Mage::getModel('catalog/product_type_configurable')->getParentIdsByChild($product->getId());
    if(isset($parentIds[0])){
        $parent = Mage::getModel('catalog/product')->load($parentIds[0]);
        // do stuff here
    }
}

10
投票

您可以使用:

$product->getTypeInstance();

这将返回您产品的类型对象

然后您可以执行您的:

->getParentIdsByChild()

最后给予:

$product->getTypeInstance()->getParentIdsByChild($child->getId());

8
投票

这是 magento 1.7.2 的另一个解决方案

$parentIds = Mage::getSingleton('catalog/product_type_configurable')->getParentIdsByChild($mageProduct->getId());

1
投票

我们可以在块文件中使用,magento 2,

 protected $_catalogProductTypeConfigurable;

 public function __construct(
            \Magento\Catalog\Block\Product\Context $context,       
            //for getting parent id of simple
            \Magento\ConfigurableProduct\Model\ResourceModel\Product\Type\Configurable $catalogProductTypeConfigurable,
            array $data = []
        ) {
               //for getting parent id of simple
            $this->_catalogProductTypeConfigurable = $catalogProductTypeConfigurable;
            parent::__construct($context, $data);
        }
    public function getProductData($id){ 
            $parentByChild = $this->_catalogProductTypeConfigurable->getParentIdsByChild($id);
            if(isset($parentByChild[0])){
                //set id as parent product id...
                $id = $parentByChild[0];          
            }
            return $id;     
        }   

0
投票

您可以使用

$_product->getTypeId();
检查产品的类型,如果返回“可配置”,则采用可配置型号,如果返回“分组”,则采用分组型号。

希望这有帮助。


0
投票

通过sql查询

SELECT parent_id
FROM catalog_product_relation
WHERE child_id = 5067;

© www.soinside.com 2019 - 2024. All rights reserved.