Magento 1.7:非系统产品属性未保存在PHP脚本中

Magento 1.7:非系统产品属性未保存在PHP脚本中,magento,Magento,我有一个脚本,它使用 $product=Mage::getModel(“目录/产品”)->loadByAttribute('sku',$data['id') 如果修改或检索系统属性(如权重),一切正常: $product->getWeight();//返回正确的权重 $product->设定重量(5.0);//正确设置重量 我有两个自定义属性:google\u product\u category和mpn。如果我尝试使用相同的技术修改它们,例如: $product->setMpn('123ABC

我有一个脚本,它使用
$product=Mage::getModel(“目录/产品”)->loadByAttribute('sku',$data['id')

如果修改或检索系统属性(如权重),一切正常:
$product->getWeight();//返回正确的权重
$product->设定重量(5.0);//正确设置重量

我有两个自定义属性:google\u product\u category和mpn。如果我尝试使用相同的技术修改它们,例如:
$product->setMpn('123ABC')
$product->setGoogleProductCategory(“电子产品”)
调用不会抛出错误,但数据不会保存(是的,我随后调用$product->save()


我做错了什么?

你能发布你的脚本吗?你是开发者模式吗

看起来问题是因为商店面积

查看
Mage\u目录\u型号\u产品
->
setOrigData

public function setOrigData($key=null, $data=null)
{
    if (Mage::app()->getStore()->isAdmin()) {
        return parent::setOrigData($key, $data);
    }

    return $this;
}
保存产品时,需要将数据与原始数据进行比较

如果从“管理”区域运行origdata,它可以检索origdata。如果您的脚本从“默认”区域运行,它将无法获取原始数据

因此,如果您处于开发人员模式,在代码的某个点上会抛出一个警告,这将破坏您的脚本(我可能是错的,因为您说过没有抛出错误)

您可以通过将
Mage::app('default')
更改为
Mage::app('admin')

或者使用
Mage::app()->setCurrentStore('admin')

你能发布你的脚本吗?你是开发者模式吗

看起来问题是因为商店面积

查看
Mage\u目录\u型号\u产品
->
setOrigData

public function setOrigData($key=null, $data=null)
{
    if (Mage::app()->getStore()->isAdmin()) {
        return parent::setOrigData($key, $data);
    }

    return $this;
}
保存产品时,需要将数据与原始数据进行比较

如果从“管理”区域运行origdata,它可以检索origdata。如果您的脚本从“默认”区域运行,它将无法获取原始数据

因此,如果您处于开发人员模式,在代码的某个点上会抛出一个警告,这将破坏您的脚本(我可能是错的,因为您说过没有抛出错误)

您可以通过将
Mage::app('default')
更改为
Mage::app('admin')

或者使用
Mage::app()->setCurrentStore('admin')

尝试删除
var/cache
下的所有文件。您还可以尝试调用
$product->getResource()->getAttribute('mpn')->getBackend()->getTable()
进行调试尝试删除
var/cache
下的所有文件。您还可以尝试调用
$product->getResource()->getAttribute('mpn')->getBackend()->getTable()
进行调试