Apa perbedaan antara $ model-> getOrigData (); dan $ model-> getData () ;?


8

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.


2
Bagaimanapun, aku tidak bermaksud seperti itu. jadi saya hanya ingin menjelaskan daerah yang membingungkan di Magento. Karena saya baru saja memindahkan platform e-commerce ini.
Sukeshini

Jawaban:


10

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.


Terima kasih banyak. Saya juga menemukan sumber daya. alanstorm.com/magento_models_orm
Sukeshini

15

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::_origDataproperti. Hal ini memungkinkan dilakukannya optimasi untuk _beforeSavepanggilan 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().

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.