存储覆盖/保存前的主义日期

时间:2010-03-22 09:52:48

标签: symfony1 doctrine save

我有一个带有日期字段“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数据已保存

2 个答案:

答案 0 :(得分:7)

在Doctrine 1.2中,您可以覆盖preSave伪事件:

// In your model class
public function preSave($event) {
   $dob = $this->getDateOfBirth();

   //do whatever you need

   parent::preSave($event);
}

In Doctrine 2.1 the function names changed.

答案 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
}

more info from doc about getModified()