tôi nhận được một lỗi lạ khi tôi thực hiện truy vấn DQL này:Sử dụng một hàm DATE() trong một mệnh đề WHERE với DQL
SELECT u FROM User u LEFT JOIN u.schedule s WHERE DATE(s.timestamp) = DATE(NOW())
Trường hợp ngoại lệ được ném bởi Học thuyết với thông điệp:
Expected known function, got 'DATE'
vấn đề trông giống như this bug, nhưng đó đề cập đến DATE() chức năng trong một mệnh đề GROUP BY và các lỗi được đóng cửa cho học thuyết 2.2. Tại thời điểm này, tôi nhận được ngoại lệ với học thuyết 2.4-DEV.
Truy vấn có nghĩa là để chọn tất cả người dùng lên kế hoạch cho ngày hôm nay. Có cách nào tôi có thể tạo DQL này? Tôi đã thử nghiệm phiên bản SQL trong phpMyAdmin và có truy vấn không gây ra lỗi. Điều gì có thể sai?
Doctrine2 DQL không có hàm DATE() hoặc NOW(): http://doctrine-orm.readthedocs.org/en/latest/reference/dql-doctrine-query-language.html#dql-functions . Nhưng bạn có thực sự muốn so sánh hai dấu thời gian trên sự bình đẳng của họ không? – memoryleak
Tôi đã lên kế hoạch cho các bệnh nhân hẹn (ngày + giờ) và tôi muốn liệt kê tất cả bệnh nhân cho ngày hôm nay. Có một cách xấu xí để làm điều này: chuẩn bị câu lệnh với một đối tượng 'DateTime' php cho" today ". Và chia trường datetime thành phần "ngày" và "thời gian". Tôi có thể vượt qua phần xấu xí đầu tiên, nhưng thứ hai chỉ là vặn với db của bạn bởi vì một vấn đề lớp trừu tượng. Vì vậy, đó là lý do tại sao tôi hy vọng cho một giải pháp mà điều này sẽ làm việc :) Tôi đã thử một 'CHỌN CAST (s.timestamp như NGÀY) như schedule_day TỪ ... WHERE schedule_day =: today' nhưng nó trả lại một lỗi tương tự ... –