Magento如何获得一些额外信息的选项

时间:2013-09-27 09:11:05

标签: sql magento join options

我正在使用选项,添加一些其他信息,如图片。我用option_type_id和option_id将这些数据保存到我自己的表中。现在在前端我想将自己的表数据加入默认选项。所以这些选项附带图片信息。

$_option->getValues() 

这个函数返回选项数据,现在我必须达到这个函数的实现,它生成查询,所以我可以添加连接来检索我自己的数据。

感谢

2 个答案:

答案 0 :(得分:0)

我没有看到干净的方法来做到这一点。

这是一种肮脏的方式: 重写Mage_Catalog_Model_Resource_Product_Option并在下面添加此功能。 随你加入修改它。但是,对于每个产品选项,都会加入到您的表中。你需要检查一些标志,如果设置了这个标志,你只需添加你的连接。

protected function _getLoadSelect($field, $value, $object)
{ 
    $select = parent::_getLoadSelect($field, $value, $object);
    if("do your check here"){
         $select->join('your table')
    }      
    return $select;
}

答案 1 :(得分:0)

这是我从中获得成功的原因。

我覆盖了产品的资源集合

 class MYC_COPSwatch_Model_Resource_Product_Option_Collection extends Mage_Catalog_Model_Resource_Product_Option_Collection{        

     public function addValuesToResult($storeId = null)
{
    if ($storeId === null) {
        $storeId = Mage::app()->getStore()->getId();
    }
    $optionIds = array();
    foreach ($this as $option) {
        $optionIds[] = $option->getId();
    }
    if (!empty($optionIds)) {
        /** @var $values Mage_Catalog_Model_Option_Value_Collection */
        $values = Mage::getModel('catalog/product_option_value')
            ->getCollection()                
            ->addTitleToResult($storeId)
            ->addPriceToResult($storeId)                

            ->addSwatchToResult($storeId)   //USED Join in this function             

            ->setOrder('sort_order', self::SORT_ORDER_ASC)
            ->setOrder('title', self::SORT_ORDER_ASC);

        foreach ($values as $value) {
            $optionId = $value->getOptionId();
            if($this->getItemById($optionId)) {
                $this->getItemById($optionId)->addValue($value);
                $value->setOption($this->getItemById($optionId));
            }
        }
    }

    return $this;
} 

可能会为某人节省时间。