mam dziwny błąd podczas wykonywania tej kwerendy DQL:Użyj funkcji Date() w klauzuli WHERE z DQL
SELECT u FROM User u LEFT JOIN u.schedule s WHERE DATE(s.timestamp) = DATE(NOW())
Wyjątkiem jest wyrzucane przez Doctrine z komunikatem:
Expected known function, got 'DATE'
Problem wygląda podobnie do this bug, ale dotyczy funkcji DATE() w klauzuli GROUP BY, a błąd jest zamknięty dla Doctrine 2.2. W tej chwili otrzymuję wyjątek z doktryną 2.4-DEV.
Zapytanie ma na celu wybranie wszystkich użytkowników zaplanowanych na dziś. Czy istnieje sposób, w jaki mogę stworzyć ten DQL? Przetestowałem wersję SQL w phpMyAdmin i tam zapytanie nie wywołuje błędu. Co może być nie tak?
Doctrine2 DQL nie ma funkcji DATE() ani NOW(): http://doctrine-orm.readthedocs.org/en/latest/reference/dql-doctrine-query-language.html#dql-functions . Ale czy naprawdę chcesz porównać dwa znaczniki czasu dotyczące ich równości? – memoryleak
Mam zaplanowanych pacjentów na spotkanie (data + czas) i chcę listę wszystkich pacjentów na dziś. Istnieje brzydki sposób, aby to zrobić: przygotuj instrukcję z obiektem 'DateTime' dla" dzisiaj ". I podziel pole datetime na część "date" i "time". Mogę przezwyciężyć pierwszą brzydką część, ale drugą jest po prostu wkręcanie z twoją db, ponieważ problem z warstwą abstrakcji. Dlatego właśnie liczyłem na rozwiązanie, w którym to mogłoby działać :) Próbowałem 'SELECT CAST (s.timestamp jako DATE) jako schedule_day FROM ... WHERE schedule_day =: today' ale zwrócił podobny błąd ... –