gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 12:26:42 25 4
gpt4 key购买 nike

我希望能够在不保存属性的父实体的情况下保存属性的值。我通过模块的 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);

关于php - 在 Magento 中保存属性值而不保存其父实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6714588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com