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个客户,我担心在生产服务器上运行它会对性能产生影响…… 任何想法都赞赏.
EAV资源模型提供了保存单个属性而无需保存实体的功能.
$value = Mage::helper('referral')->generateRafCode($oCustomer); $oCustomer->setData($vAttrCode,$value)->getResource()->saveAttribute($oCustomer,$vAttrCode); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |