Caricamento di un attributo da un modello e salvarlo
-
12-12-2019 - |
Domanda
Qual è il modo più efficiente (usando i metodi magenti) per caricare solo un attributo cliente, cambiando il suo valore e salvarlo.
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.