Magento Observer保存属性(如果不存在)


Magento Observer Save Attribute If Not Exists

我创建了一个观察者,将选定的多选属性值保存在一个单独的表中。仅当属性值不存在时才应保存。这是我的代码

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();
        }
    }
}

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

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

我认为您需要考虑按属性(例如零件号)获取模型,如果加载了它,您将有一个ID。如果没有条目,那么您将不会获得ID。因此,在保存时,它应该可以工作。

另一个问题是,你可以在数据库中添加更多的字段到模型中,但有时它们不起作用——除非你再次运行安装脚本。因此,您可能需要在删除表和core_resource中用于设置模块的条目后尝试此操作。然后,在初次安装时,所有的表都会在后端生成,并神奇地与在线表单一起正常工作。