Magento Observer如果不存在则保存属性

时间:2012-08-22 08:46:00

标签: php magento

我创建了一个观察者,将选定的多选属性值保存在一个单独的表中。只有在不存在的情况下,属性值才应该保存。这是我的代码

public function catalogProductSaveBefore(Varien_Event_Observer $observer)
{
    $product=$observer->getProduct();
    $_product=Mage::getModel('catalog/product')->load($product->getId());
    $makeOptions=$_product->getAttributeText('make'); //array  [0] => Audi [1] => BMW
    $partsfindermodel=Mage::getModel('partsfinder/parts');
    foreach($makeOptions as $makeOption)
    {
        if(!$partsfindermodel->getMake($makeOption))
        {
            $partsfindermodel->setMake($makeOption)->save();
        }
    }
}

只有数组中的最后一个元素才会保存在表格中。

如果不存在,如何保存值?

1 个答案:

答案 0 :(得分:0)

我认为您需要考虑按属性获取模型 - 例如部件号 - 如果加载,您将拥有一个ID。如果没有条目,那么您将无法获得ID。因此,当涉及到保存时,它应该可以工作。

另一个问题是,您可以在数据库中添加包含更多字段的模型,但有时它们不起作用 - 除非您再次运行安装脚本。因此,您可能希望在删除表和core_resource中的条目后尝试此操作,以便设置模块。然后,在初始安装时,所有表都在后端进行,并与在线表单神奇地协同工作。