我需要根据基于产品自定义选项中的值检索的产品ID从产品中检索一系列交叉销售产品ID。
我研究过如何使用直接的MySQL语句来获取它。如何使用标准的magento调用来获取它?
这是MySQL进程:
Select option_type_id from mage_catalog_product_option_type_title where option_type_id EQ 'desired value';
然后:
Select option_id from mage_catalog_product_option_type_value where option_type_id EQ option_type_id; (from above step)
然后:
Select product_id from mage_catalog_product_option where option_id EQ option id; (from previous step)
然后:
Select linked_product_id from mage_catalog_product_link where product_id EQ product_id (from previous step) AND link_type_id ='5';
(我在PHP / MySQL方面经验丰富,但在Magento几乎没有超过新手级别)
有人可以帮忙吗?非常非常感谢你!
标记
答案 0 :(得分:0)
试试这个解决方案:
$collection = Mage::getModel('catalog/product_link')->getCollection()->addFieldToFilter('option_type_id','desired value’);
$collection->join(array('option' => 'catalog/product_option'), 'main_table.product_id = option.product_id')
->join(array('option_value' => 'catalog/product_option_type_value'), 'option.option_id = option_value.option_id');
var_dump($collection->getFirstItem()->getData());
这就是它通常的运作方式:
$collection = Mage::getModel('catalog/product_option_value')->getCollection()->addFieldToFilter('option_type_id','desired value’);
$collection = Mage::getModel('catalog/product_option')->getCollection()->addFieldToFilter('option_id',$collection->getFirstItem()->getOptionId());
$collection = Mage::getModel('catalog/product_link')->getCollection()->addFieldToFilter('product_id',$collection->getFirstItem()->getProductId());
var_dump($collection->getFirstItem()->getData());