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.
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.
Réponses:
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 ).
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::_origData
propriété. Cela permet de faire des optimisations pour les _beforeSave
appels 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()
.