Ada dua metode yang mengambil data model.
$model->getData();
$model->getOrigData();
Adakah yang bisa menjelaskan apa perbedaan di antara mereka? Bantuan apa pun akan dihargai.
Ada dua metode yang mengambil data model.
$model->getData();
$model->getOrigData();
Adakah yang bisa menjelaskan apa perbedaan di antara mereka? Bantuan apa pun akan dihargai.
Jawaban:
getOrigData()
mengembalikan data dalam objek pada saat itu diinisialisasi / dihuni.
Setelah model diinisialisasi Anda dapat memperbarui data itu dan getData()
akan mengembalikan apa yang saat ini Anda miliki di objek itu.
Lihatlah Varien_Object
( getOrigData
, setOrigData
), grep -R "origData" app/
sehingga Anda dapat melihat apa yang digunakan.
Di EE, sangat berguna untuk mencatat apa yang diubah ( Enterprise_Logging ) modul.
Ini paling mudah dijelaskan dengan sebuah contoh:
$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"
Singkatnya, setiap model (setelah dimuat) akan membuat salinan dari data yang dimuat sebelumnya dan menyimpannya di Model_Class::_origData
properti. Hal ini memungkinkan dilakukannya optimasi untuk _beforeSave
panggilan sehingga permintaan hanya mengubah data yang diubah dan tidak menulis ulang data yang sama sepanjang waktu.
Juga, setiap kali Anda memanggil setData()
bendera ditetapkan bahwa model telah mengubah data. Anda dapat memeriksa apakah model telah mengubah data dengan menelepon $model->hasDataChanges()
.