Domanda

Qual è il modo più efficiente (usando i metodi magenti) per caricare solo un attributo cliente, cambiando il suo valore e salvarlo.

È stato utile?

Soluzione

Se hai già il modello del cliente (almeno parzialmente caricato), è possibile utilizzare questa riga per salvare un singolo attributo:

$customer->getResource()->saveAttribute($customer, 'attribute_code_goes_here');
.

In realtà, per questo funzionare, gli unici attributi che devono essere presenti nell'istanza $customer sono entity_id e l'attributo che si desidera salvare.È possibile caricare il cliente con gli attributi EAV selezionati come questo:

$customer = Mage::getModel('customer/customer')
    ->load($customerId, array('attribute_code_goes_here'));
.

Altri suggerimenti

$customer = Mage::getModel('customer/customer')->loadByEmail('customer@email.com');

//or if you know the customer ID
$customer = Mage::getModel('customer/customer')->load($id, array('attribute_code'));

// attribute_code
$customer->setAttributeCode('new value here')->save();
.

Questo salverà solo il valore cambiato.MAGENTO strisce tutti gli elementi non modificati e salva solo ciò che è stato cambiato dai dati.

Questo in: Mage_Eav_Model_Entity_Abstract::_collectSaveData() che è un genitore di Mage_Customer_Model_Resource_Customer, che gestisce la funzionalità di risparmio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top