Es gibt zwei Methoden, mit denen Modelldaten abgerufen werden.
$model->getData();
$model->getOrigData();
Kann jemand erklären, was der Unterschied zwischen ihnen ist? Jede Hilfe wird geschätzt.
magento-1.7
model
Sukeshini
quelle
quelle
Antworten:
getOrigData()
Gibt die Daten im Objekt zum Zeitpunkt der Initialisierung / Auffüllung zurück.Nachdem das Modell initialisiert wurde, können Sie diese Daten aktualisieren und geben
getData()
das zurück, was Sie aktuell in diesem Objekt haben.Schauen Sie sich
Varien_Object
(getOrigData
,setOrigData
) an,grep -R "origData" app/
damit Sie sehen können, was verwendet wird.In EE ist es sehr nützlich, das geänderte Modul ( Enterprise_Logging ) zu protokollieren .
quelle
Dies lässt sich am einfachsten anhand eines Beispiels erklären:
Kurz gesagt, jedes Modell (einmal geladen) erstellt eine Kopie der ursprünglich geladenen Daten und speichert sie in der
Model_Class::_origData
Eigenschaft. Auf diese Weise können Optimierungen für_beforeSave
Aufrufe vorgenommen werden, sodass Abfragen nur die geänderten Daten ändern und nicht immer dieselben Daten neu schreiben.Außerdem wird jedes Mal, wenn Sie
setData()
ein Flag aufrufen, gesetzt, dass das Modell Daten geändert hat. Sie können überprüfen, ob ein Modell Daten geändert hat, indem Sie aufrufen$model->hasDataChanges()
.quelle