我知道在 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?
您可以同时致电两者并提供后备方案,因为它应该是其中之一:
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
}
}
您可以使用:
$product->getTypeInstance();
这将返回您产品的类型对象
然后您可以执行您的:
->getParentIdsByChild()
最后给予:
$product->getTypeInstance()->getParentIdsByChild($child->getId());
这是 magento 1.7.2 的另一个解决方案
$parentIds = Mage::getSingleton('catalog/product_type_configurable')->getParentIdsByChild($mageProduct->getId());
我们可以在块文件中使用,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;
}
您可以使用
$_product->getTypeId();
检查产品的类型,如果返回“可配置”,则采用可配置型号,如果返回“分组”,则采用分组型号。
希望这有帮助。
通过sql查询
SELECT parent_id
FROM catalog_product_relation
WHERE child_id = 5067;