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::_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().