Qual è la differenza tra $ model-> getOrigData (); e $ model-> getData () ;?


8

Esistono due metodi per recuperare i dati del modello.

$model->getData();
$model->getOrigData();

Qualcuno può spiegare qual è la differenza tra loro? Qualsiasi aiuto sarà apprezzato.


2
Non importa, non intendevo questo. quindi voglio solo chiarire le aree confuse nel magento. Perché di recente ho spostato questa piattaforma di e-commerce.
Sukeshini,

Risposte:


10

getOrigData() restituisce i dati nell'oggetto nel momento in cui sono stati inizializzati / popolati.

Dopo che il modello è stato inizializzato, è possibile aggiornare quei dati e getData()restituire ciò che si ha attualmente in quell'oggetto.

Dai un'occhiata a Varien_Object( getOrigData, setOrigData), grep -R "origData" app/così puoi vedere cosa viene usato.

In EE, è molto utile registrare il modulo modificato ( Enterprise_Logging ).


Molte grazie. Ho anche trovato una risorsa. alanstorm.com/magento_models_orm
Sukeshini,

15

Questo è spiegato più facilmente da un esempio:

$product = Mage::getModel('catalog/product')->load(123);
$product->getData('something'); // returns "foo"
$product->setData('something', 'bar');
$product->getData('something');     // returns "bar"
$product->getOrigData('something'); // returns "foo"

In breve, ogni modello (una volta caricato) creerà una copia dei dati caricati originariamente e li memorizzerà in Model_Class::_origDataproprietà. Ciò consente di eseguire ottimizzazioni per le _beforeSavechiamate in modo che le query modifichino solo i dati modificati e non riscrivano sempre gli stessi dati.

Inoltre, ogni volta che si chiama setData()un flag viene impostato che il modello ha modificato i dati. È possibile verificare se un modello ha modificato i dati chiamando $model->hasDataChanges().

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.