$ model-> getOrigData();有什么区别?和$ model-> getData();?


8

有两种方法可以检索模型数据。

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

谁能解释他们之间的区别?任何帮助将不胜感激。


2
没关系,我不是那个意思。所以我只想澄清magento中令人困惑的地方。因为我最近移动了这个电子商务平台。
Sukeshini

Answers:


10

getOrigData() 返回对象在初始化/填充时的数据。

初始化模型后,您可以更新该数据,getData()并将返回您当前在该对象中拥有的数据。

看一下Varien_ObjectgetOrigDatasetOrigData),grep -R "origData" app/所以您可以看一下所使用的内容。

在EE中,记录更改内容(Enterprise_Logging)模块非常有用。


非常感谢。我也找到了资源。alanstorm.com/magento_models_orm
Sukeshini

15

用一个例子最容易解释:

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

简而言之,每个模型(一旦加载)都将复制原始加载的数据并将其存储在Model_Class::_origData属性中。这样就可以对_beforeSave调用进行优化,以便查询仅修改更改的数据,而不会一直重写相同的数据。

同样,任何时候调用setData()标记都会设置模型已更改数据。您可以通过调用来检查模型是否更改了数据$model->hasDataChanges()

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.