2014-10-19 18 views
5

Tôi cố gắng so sánh ngày bắt đầu của một sự kiện với ngày hiện tại để chỉ hiển thị các sự kiện tiếp theo. Đây là thử của tôi trong eventRepository:Cách so sánh DateTime trong kho lưu trữ Extbase

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

Nhưng kết quả không như mong đợi. Đây là truy vấn kết quả:

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

Như bạn có thể thấy DateTime được chuyển thành dấu thời gian. Làm thế nào tôi có thể sử dụng MySQL NOW() trong truy vấn HOẶC sử dụng DateTime đúng cách?

Trả lời

12

Sử dụng chuỗi giá trị của ngày:

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

này không làm việc cho tôi (Extbase 6.2). Tôi đã phải sử dụng $ date-> getTimestamp() để thay thế. – Martin

+1

@biesior: Bạn thật tuyệt vời. Tôi đã gần như tất cả mọi thứ từ câu trả lời của bạn. Chúc mừng! :) –

+0

@Martin cảm ơn, giải pháp của bạn đã hoạt động hoàn hảo! – Phil

Các vấn đề liên quan