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.
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.
Respuestas:
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 ).
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::_origData
propiedad. Esto permite realizar optimizaciones para las _beforeSave
llamadas, 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()
.