Есть два метода, которые получают данные модели.
$model->getData();
$model->getOrigData();
Кто-нибудь может объяснить, в чем разница между ними? Любая помощь будет оценена.
magento-1.7
model
Sukeshini
источник
источник
Ответы:
getOrigData()
возвращает данные в объекте во время его инициализации / заполнения.После инициализации модели вы можете обновить эти данные и
getData()
вернуть то, что у вас есть в данный момент в этом объекте.Посмотрите на
Varien_Object
(getOrigData
,setOrigData
),grep -R "origData" app/
чтобы вы могли взглянуть на то, что используется.В EE очень полезно регистрировать модуль изменения ( Enterprise_Logging ).
источник
Это проще всего объяснить на примере:
В двух словах, каждая модель (после загрузки) сделает копию первоначально загруженных данных и сохранит ее в
Model_Class::_origData
свойстве. Это позволяет оптимизировать_beforeSave
вызовы, чтобы запросы только изменяли измененные данные и не перезаписывали одни и те же данные все время.Кроме того, каждый раз, когда вы вызываете
setData()
флаг, устанавливается, что модель изменила данные. Вы можете проверить, изменила ли модель данные, позвонив$model->hasDataChanges()
.источник