2014-10-19 19 views
5

Próbuję porównać datę początkową wydarzenia z bieżącą datą, aby wyświetlić tylko następne zdarzenia. To jest moja próba w przypadkuRepository:Jak porównać DateTime w repozytorium Extbase

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

Ale wynik nie jest zgodny z oczekiwaniami. Oto wynikowe zapytanie:

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

Jak widać, DateTime jest konwertowane na znacznik czasu. Jak mogę użyć MySQL NOW() w kwerendzie LUB użyć DateTime poprawnie?

Odpowiedz

12

Zastosowanie wartość ciąg daty:

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

ta nie działa dla mnie (Extbase 6.2). Musiałem zamiast tego użyć $ date-> getTimestamp(). – Martin

+1

@biesior: Jesteś niesamowity. Mam prawie wszystko z twoich odpowiedzi. Twoje zdrowie! :) –

+0

@Martin dzięki, twoje rozwiązanie działało idealnie! – Phil