2010-03-22 20 views
6

Kullanıcı tarafından doldurulmuş bir tarih alanı "date_of_birth" (symfony form tarihi) olan Doctrine modelim var, tüm kullanıcı% 100 db beklendiği gibi kaydeder, ancak modelde save() yöntemi Kaydetmeden önce bu alanın değerini almam gerekiyor. Benim sorunum Tarih değerini elde çalışırken yeni bir rekor ve varolan kayıtDoktrin tarihi kaydetme geçersiz kılma/kaydetmeden önce

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); 
} 

bu alanın değerini almak Nasıl ise eski değer verisi kaydedilir beore eğer onun boş bir dize döndürür olmasıdır

// 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.

cevap

7

n doktrin "yeni" değerleri kullanır, ancak getModified() yöntemi vardır ve tam olarak ihtiyacınız olanı yapar.

$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()

+0

Linkler ... kırık:/ – Carlos

+0

Tamam bağlantılar (cari docs – Benoit

+0

Ayrıca Carlos Doktrin Projesi yıllar boyunca kendi bağlantılarını korumak yoktu çünkü üzerimde downvote gerek yoktur için 6 sabit ve bir buçuk yıl) – Benoit

2

Genel Görünüm sözde olayları i: Eğer preSave sözde olay geçersiz kılabilirsiniz Doktrin 1.2 olarak