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::_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().