Дата доктрины в сохранении отменяет / перед сохранением - PullRequest
6 голосов
/ 22 марта 2010

У меня есть модель Doctrine с полем даты "date_of_birth" (дата в форме Symfony), который заполняется пользователем, все работает на 100%, он сохраняет в БД, как и ожидалось, однако в методе модели 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);
 }

Как я могу получить значение этого поля, данные сохранены? 1004 *

Ответы [ 2 ]

7 голосов
/ 22 марта 2010

В Doctrine 1.2 вы можете переопределить preSave псевдо-событие:

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

   //do whatever you need

   parent::preSave($event);
}

В Doctrine 2.1 имена функций изменены.

2 голосов
/ 14 июля 2011

Обычно псевдо-события в доктрине используют «новые» значения, однако есть метод getModified (), который делает именно то, что вам нужно.

$modifiedFields = $this->getModified(true);
if(isset($modifiedFields['date_of_birth'])) { //index is available only after change
  echo $modifiedFields['date_of_birth']; //old value
}

больше информации из документа о getModified ()

...