Me gustaría poder guardar el valor de un atributo sin guardarlo. Creé un nuevo atributo de cliente a través del archivo sql/setup de mi módulo (ref), y ahora deseo completar ese atributo para cada uno de los clientes existentes. Creé un modelo Backend para el atributo que detecta valores nulos durante la carga de la entidad (afterLoad) y genera el contenido, pero dudo en guardar la entidad en ese punto del proceso.guarda un valor de atributo sin guardar su entidad padre en Magento
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;
}
}
Idealmente, me gustaría llamar algo así como $this->getAttribute()->setValue('blah')->save()
en que afterLoad
método para que no se basa en el usuario haga clic en Guardar.
podría escribir un script que carga una colección de todos los clientes y los paseos para establecer el valor, pero hay más de 50.000 clientes y estoy preocupado por el impacto en el rendimiento de ejecución que en un servidor de producción ...
Cualquier pensamiento apreciado.
JD
perfectamente elegante y performant. gracias @vinai –
nice !! Me encanta, poniéndolo en mis notas ahora. –
@ dan.codes ¿conserva notas? Pensé que ese era el objetivo de StackOverflow ... notarás que la razón por la que volví a esta pregunta es porque necesito usarla de nuevo y ¡no tengo notas! :) –