【发布时间】:2011-07-16 01:04:29
【问题描述】:
我希望能够在不保存其父实体的情况下保存属性的值。我通过模块的 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 个客户,我担心在生产服务器上运行它会影响性能...
任何想法表示赞赏。
京东
【问题讨论】:
标签: php magento attributes entity-attribute-value