2014-10-19 11 views
5

Cerco di confrontare la data di inizio di un evento con la data corrente per visualizzare solo gli eventi successivi. Questo è il mio tentativo nel eventRepository:Come confrontare DateTime nel repository Extbase

public function findNext() { 
    $query = $this->createQuery(); 
    $query->matching(
     $query->greaterThanOrEqual('datum_beginn', new \DateTime('midnight')) 
    ); 
    return $query->execute(); 
} 

Ma il risultato non è come previsto. Questa è la query risultante:

SELECT events.* FROM events WHERE events.datum_beginn >= 1413669600 AND ... 

Come si può vedere il DateTime viene convertito in un timestamp. Come posso utilizzare MySQL NOW() nella query O utilizzare DateTime correttamente?

risposta

12

Uso valore stringa di data:

public function findNext() { 
    $query = $this->createQuery(); 
    $date = new \DateTime('midnight'); 
    $query->matching(
     $query->greaterThanOrEqual('datum_beginn', $date->format('Y-m-d H:i:s')) 
    ); 

    return $query->execute(); 
} 
+2

Questo non ha funzionato per me (Extbase 6.2). Ho dovuto usare $ date-> getTimestamp() invece. – Martin

+1

@biesior: Sei fantastico. Ho quasi tutto dalle tue risposte. Saluti! :) –

+0

@ Martin Grazie, la tua soluzione ha funzionato perfettamente! – Phil