2010-03-22 12 views
6

Ho modello Doctrine con un campo data "date_of_birth" (data modulo symfony) che viene compilato dall'utente funziona tutto al 100% salva nel db come previsto, tuttavia nel modello save() metodo Ho bisogno di recuperare il valore di questo campo prima che si verifichi il salvataggio. Il mio problema è che quando si cerca di ottenere il valore di data restituisce una stringa vuota se un nuovo record e il valore storico, se si tratta di un record esistenteDoctrine date in save override/before 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); 
} 

Come posso recuperare il valore di questo campo beore i dati vengono salvati

risposta

7

In Dottrina 1.2 è possibile ignorare preSave pseudo-evento:

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

+0

collegamenti interrotti ...:/ – Carlos

+0

link Ok fissati al docs attuali – Benoit

+0

anche Carlos non v'è alcuna necessità di downvote su di me perché Dottrina progetto non ha mantenuto i loro legami nel corso degli anni (6 e sei anni e mezzo) – Benoit

2

generaly pseudo-eventi i n doctrine usa valori "nuovi", tuttavia esiste il metodo getModified() e fa esattamente ciò di cui hai bisogno.

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