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.
magento-1.7
model
Sukeshini
sumber
sumber
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.
sumber
Ini paling mudah dijelaskan dengan sebuah contoh:
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()
.sumber