我需要比较某人保存时我的对象的某个属性是否已更改。我写了一个插件,可以在后端更新对象之前和之后添加一些功能。
所以,我不知道这是不是按预期工作,或者我错了。
我认为在将状态保存到数据库之前我会得到状态:
function preUpdateObject(Object_MyObject $object) {}
中对象的新状态
function postUpdateObject(Object_MyObject $object) {}
但这不起作用:
public function preUpdateObject(Object_MyObject $object) {
$this->tempOldDate = $object->getUpdate();
}
public function postUpdateObject(Object_MyObject $object){
if($this->tempOldDate->compareDate($object->getUpdate()) == -1) {
// do something because a newer date has been entered
}
}
任何线索如何在更新之前获取旧对象状态?
答案 0 :(得分:0)
好像这个功能没有按预期工作。我提交了一份错误报告: http://www.pimcore.org/issues/browse/PIMCORE-1232
我创建了一个可以使用的解决方法。
数据库未更新。所以preUpdateObject是用于获取对象状态的函数是正确的,但是:
检查数据库是否未更新....我想要一个位于表'object_1'
中的对象的日期// oldDate has the old value
$dbAdapter = Pimcore_Resource_Mysql::get("database");
$dbentry = $dbAdapter->fetchRow(
$dbAdapter->select()
->from('object_1')
->where('o_id = ?', $object->getId()));
$oldDate = new Pimcore_Date($dbentry['update']);
使用生成的Object类不起作用,但如果清除缓存
// get's the new date from the editor
$oldDate = Object_MyObject::getById($object->getId())->getUpdate();
// this also works but don't know if it is safe to delete
// the object from the registry
Zend_Registry::set('object_' . $object->getId(), false);
$oldDate = Object_MyObject::getById($object->getId())->getUpdate();