在后端编辑产品时,我需要知道它的任何数据是否已更改?
即使我没有修改任何字段,$product->hasDataChanges() 也总是返回 true。
为什么即使我没有修改任何字段,$product->hasDataChanges() 也总是返回 true。?
查看 Varien_Object 函数setData函数,即使从技术上讲数据没有更改,hasDataChanges似乎也始终设置为 true。
public function setData($key, $value=null)
{
$this->_hasDataChanges = true;
if(is_array($key)) {
$this->_data = $key;
$this->_addFullNames();
} else {
$this->_data[$key] = $value;
if (isset($this->_syncFieldsMap[$key])) {
$fullFieldName = $this->_syncFieldsMap[$key];
$this->_data[$fullFieldName] = $value;
}
}
return $this;
}
Run Code Online (Sandbox Code Playgroud)
解决方案:
当您有一个 Mage_Core_Model_Abstract 类型的模型时,您可以使用公共函数 getOrigData($key=null) 方法轻松获取保存时的先前数据(原始数据)。
getOrigData()返回对象初始化/填充时的数据。
模型初始化后,您可以更新该数据, getData() 将返回您当前在该对象中拥有的内容。
查看 Varien_Object (getOrigData,setOrigData) 以便了解它的使用方式和原因。
| 归档时间: |
|
| 查看次数: |
4276 次 |
| 最近记录: |