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.
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.
Respostas:
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 ).
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::_origData
propriedade 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()
.