我有一个带有日期字段“date_of_birth”(symfony表单日期)的Doctrine模型,由用户填写所有工作100%它按预期保存到db,但是在模型save()方法中我需要检索保存之前该字段的值。我的问题是,当试图获取日期值时,如果它是新记录则返回空字符串,如果是现有记录则返回旧值
public function save(Doctrine_Connection $conn = null)
{
$dob = $this->getDateOfBirth(); // returns empty str if new and old value if existing
$dob = $this->date_of_birth; //also returns empty str
return parent::save($conn);
}
如何检索此字段的值beore数据已保存
答案 0 :(得分:7)
在Doctrine 1.2中,您可以覆盖preSave伪事件:
// In your model class
public function preSave($event) {
$dob = $this->getDateOfBirth();
//do whatever you need
parent::preSave($event);
}
答案 1 :(得分:2)
教义中的一般伪事件使用“新”值,但是有getModified()方法,它正是你所需要的。
$modifiedFields = $this->getModified(true);
if(isset($modifiedFields['date_of_birth'])) { //index is available only after change
echo $modifiedFields['date_of_birth']; //old value
}