php – 保存属性值而不在Magento中保存其父实体

前端之家收集整理的这篇文章主要介绍了php – 保存属性值而不在Magento中保存其父实体前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我希望能够保存属性的值而不保存它的父实体.我已经通过我的模块的sql / setup文件( ref)创建了一个新的客户属性,现在我想为每个现有客户填充该属性.我为该属性创建了一个后端模型,该模型在实体加载(afterLoad)期间检测空值并生成内容,但我对在此过程中保存实体犹豫不决.
class Aligent_Referral_Model_Customer_Attribute_Backend_Referralcode extends Mage_Eav_Model_Entity_Attribute_Backend_Abstract
{
public function afterLoad($oCustomer)
{
    $vAttrCode = $this->getAttribute()->getAttributeCode();
    $vValue = $oCustomer->getData($vAttrCode);
    if (empty($vValue)){
        $oCustomer->setData($vAttrCode,Mage::helper('referral')->generateRafCode($oCustomer));
    }
    return $this;
}
}

理想情况下,我想在afterLoad方法调用$this-> getAttribute() – > setValue(‘blah’) – > save(),以便它不依赖于用户点击保存.

我可以编写一个脚本来加载所有客户的集合并引导它们设置值,但是有超过50,000个客户,我担心在生产服务器上运行它会对性能产生影响……

任何想法都赞赏.
JD

EAV资源模型提供了保存单个属性而无需保存实体的功能.
$value = Mage::helper('referral')->generateRafCode($oCustomer);
$oCustomer->setData($vAttrCode,$value)->getResource()->saveAttribute($oCustomer,$vAttrCode);

猜你在找的PHP相关文章