Qual é a diferença entre $ model-> getOrigData (); e $ model-> getData () ;?

8

Existem dois métodos que recuperam dados do modelo.

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

Alguém pode explicar qual é a diferença entre eles? Qualquer ajuda será apreciada.

Sukeshini
fonte
2
Deixa pra lá, eu não quis dizer isso. então eu só quero esclarecer áreas confusas no magento. Porque mudei essa plataforma de comércio eletrônico recentemente.
Sukeshini

Respostas:

10

getOrigData() retorna os dados no objeto no momento em que foi inicializado / preenchido.

Após a inicialização do modelo, você pode atualizar esses dados e getData()retornar o que você possui atualmente nesse objeto.

Dê uma olhada em Varien_Object( getOrigData, setOrigData), grep -R "origData" app/para que você possa dar uma olhada no que é usado.

No EE, é muito útil registrar o que mudou ( módulo Enterprise_Logging ).

FlorinelChis
fonte
Muito obrigado. Eu também encontrei um recurso. alanstorm.com/magento_models_orm
Sukeshini 30/09
15

Isso é mais fácil explicado por um exemplo:

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

Em poucas palavras, todo modelo (uma vez carregado) fará uma cópia dos dados originalmente carregados e os armazenará na Model_Class::_origDatapropriedade Isso possibilita otimizações para_beforeSave chamadas, para que as consultas modifiquem apenas os dados alterados e não reescrevam os mesmos dados o tempo todo.

Além disso, sempre que você chamar setData()um sinalizador, é definido que o modelo alterou os dados. Você pode verificar se um modelo alterou os dados ligando $model->hasDataChanges().

adioe3
fonte