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.
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.
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 .
Dies lässt sich am einfachsten anhand eines Beispiels erklären:
$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"
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()
.