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.
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.
Risposte:
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 ).
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::_origData
proprietà. Ciò consente di eseguire ottimizzazioni per le _beforeSave
chiamate 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()
.