Quelle est la différence entre $ model-> getOrigData (); et $ model-> getData () ;?

8

Il existe deux méthodes qui récupèrent les données du modèle.

$model->getData();
$model->getOrigData();

Quelqu'un peut-il expliquer quelle est la différence entre eux? Toute aide serait appréciée.

Sukeshini
la source
2
Peu importe, je ne voulais pas dire ça. donc je veux juste clarifier les zones confuses dans magento. Parce que j'ai récemment déplacé cette plateforme de commerce électronique.
Sukeshini

Réponses:

10

getOrigData() renvoie les données dans l'objet au moment où il a été initialisé / rempli.

Une fois le modèle initialisé, vous pouvez mettre à jour ces données et getData()retourner ce que vous avez actuellement dans cet objet.

Jetez un œil à Varien_Object( getOrigData, setOrigData), grep -R "origData" app/afin que vous puissiez voir ce qui est utilisé.

Dans EE, il est très utile de consigner le module modifié ( Enterprise_Logging ).

FlorinelChis
la source
Merci beaucoup. J'ai également trouvé une ressource. alanstorm.com/magento_models_orm
Sukeshini
15

Ceci est plus facilement expliqué par un exemple:

$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"

En un mot, chaque modèle (une fois chargé) fera une copie des données chargées à l'origine et les stockera dans la Model_Class::_origDatapropriété. Cela permet de faire des optimisations pour les _beforeSaveappels afin que les requêtes ne modifient que les données modifiées et ne réécrivent pas les mêmes données tout le temps.

En outre, chaque fois que vous appelez setData()un indicateur, le modèle modifie les données. Vous pouvez vérifier si un modèle a modifié des données en appelant $model->hasDataChanges().

adioe3
la source