¿Cuál es la diferencia entre $ model-> getOrigData (); y $ model-> getData () ;?

8

Hay dos métodos que recuperan datos del modelo.

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

¿Alguien puede explicar cuál es la diferencia entre ellos? Cualquier ayuda será apreciada.

Sukeshini
fuente
2
No importa, no quise decir eso. así que solo quiero aclarar áreas confusas en magento. Porque he movido esta plataforma de comercio electrónico recientemente.
Sukeshini

Respuestas:

10

getOrigData() devuelve los datos en el objeto en el momento en que se inicializó / rellenó.

Después de inicializar el modelo, puede actualizar esos datos y getData()devolverá lo que tiene actualmente en ese objeto.

Eche un vistazo a Varien_Object( getOrigData, setOrigData), grep -R "origData" app/para que pueda echar un vistazo a lo que se usa.

En EE, es muy útil registrar el módulo que ha cambiado ( Enterprise_Logging ).

FlorinelChis
fuente
Muchas gracias. También encontré un recurso. alanstorm.com/magento_models_orm
Sukeshini
15

Esto se explica más fácilmente con un ejemplo:

$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"

En pocas palabras, cada modelo (una vez cargado) hará una copia de los datos cargados originalmente y los almacenará en la Model_Class::_origDatapropiedad. Esto permite realizar optimizaciones para las _beforeSavellamadas, de modo que las consultas solo modifiquen los datos modificados y no reescriban los mismos datos todo el tiempo.

Además, cada vez que llame a setData()un indicador, se establece que el modelo ha cambiado los datos. Puede verificar si un modelo ha cambiado los datos llamando $model->hasDataChanges().

adioe3
fuente