加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 13:51:15 所属栏目:PHP教程 来源:网络整理
导读:我希望能够保存属性的值而不保存它的父实体.我已经通过我的模块的sql / setup文件( ref)创建了一个新的客户属性,现在我想为每个现有客户填充该属性.我为该属性创建了一个后端模型,该模型在实体加载(afterLoad)期间检测空值并生成内容,但我对在此过程中保存实
我希望能够保存属性的值而不保存它的父实体.我已经通过我的模块的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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读