@@ -419,7 +419,10 @@ public function save(\Magento\Framework\Model\AbstractModel $object)
419
419
if ($ this ->_isPkAutoIncrement ) {
420
420
$ data = $ this ->_prepareDataForSave ($ object );
421
421
unset($ data [$ this ->getIdFieldName ()]);
422
- $ this ->_getWriteAdapter ()->update ($ this ->getMainTable (), $ data , $ condition );
422
+ $ data = $ this ->prepareDataForUpdate ($ data , $ object ->getStoredData ());
423
+ if (!empty ($ data )) {
424
+ $ this ->_getWriteAdapter ()->update ($ this ->getMainTable (), $ data , $ condition );
425
+ }
423
426
} else {
424
427
$ select = $ this ->_getWriteAdapter ()->select ()->from (
425
428
$ this ->getMainTable (),
@@ -430,6 +433,7 @@ public function save(\Magento\Framework\Model\AbstractModel $object)
430
433
if ($ this ->_getWriteAdapter ()->fetchOne ($ select ) !== false ) {
431
434
$ data = $ this ->_prepareDataForSave ($ object );
432
435
unset($ data [$ this ->getIdFieldName ()]);
436
+ $ data = $ this ->prepareDataForUpdate ($ data , $ object ->getStoredData ());
433
437
if (!empty ($ data )) {
434
438
$ this ->_getWriteAdapter ()->update ($ this ->getMainTable (), $ data , $ condition );
435
439
}
@@ -770,4 +774,21 @@ public function getChecksum($table)
770
774
}
771
775
return $ checksum ;
772
776
}
777
+
778
+ /**
779
+ * Get the array of data fields that was changed or added
780
+ *
781
+ * @param array $data
782
+ * @param array $storedData
783
+ * @return array
784
+ */
785
+ protected function prepareDataForUpdate ($ data , $ storedData )
786
+ {
787
+ foreach ($ storedData as $ key => $ value ) {
788
+ if (array_key_exists ($ key , $ data ) && $ data [$ key ] == $ value ) {
789
+ unset($ data [$ key ]);
790
+ }
791
+ }
792
+ return $ data ;
793
+ }
773
794
}
0 commit comments