Mit `DATUM()` in der Lehre Querybuilder
Ich brauchen, um alle Zeilen, in denen DATE(a.when)
dem string entspricht, der 2014-09-30
.
$builder = $this->em->createQueryBuilder();
$builder->select('a')
->from('Entity\Appointment', 'a')
->andWhere('a.when = :date')
->setParameter('date', $date);
a.when
ist ein full -DATETIME
; :date
ist nur ein string
(in DATE
- format).
Den folgenden und Variationen hat nicht funktioniert:
->andWhere('DATE(a.when) = :date')
Error: Expected known function, got 'DATE'
Was ist die korrekte Verwendung der hier?
- möglich, Duplikat der Lehre 2 - die Ergebnisse Filtern, indem Sie ein datetime-Feld-date-Teil
- nicht ein Duplikat ist. Ich bin mit der queryBuilder und die Fehlermeldung mit
createQuery
und diequeryBuilder
ist die gleiche:Error: Expected known function, got 'DATE'
. - Der Fehler ist der gleiche, weil es keine
DATE()
im DQL. Wenn Sie die WHERE-Klausel aus der verlinkten duplizieren, wird der Ansatz sollte auch funktionieren.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist eigentlich eine sehr Allgemeine Frage.
Es stellt sich heraus, dass nicht alle sql-Datenbanken unterstützen eine TERMIN-Funktion, so dass die guten Leute in der Ladung der Lehre beschlossen, nicht um es zu unterstützen nativelly.
Art von wünschen, die Sie getan haben, denn es würde gespeichert haben ein paar Leute eine ganze Menge Aufwand.
So fügen Sie diesen eher Magische Klasse zum Projekt:
Dann wire es in der Lehre Abschnitt Ihrer app/config.yml:
http://doctrine-orm.readthedocs.org/en/latest/cookbook/dql-user-defined-functions.html
http://symfony.com/doc/current/cookbook/doctrine/custom_dql_functions.html
http://symfony.com/doc/current/reference/configuration/doctrine.html
Gibt es andere Pakete gibt, mit mehr sql-Funktionen. Seltsam genug, das erste mal sah ich vor ein paar Jahren, keiner von Ihnen hatte das Datum definiert. Also habe ich einfach meinen eigenen gemacht.
====================================================================
Update 01
Ich nicht zu überprüfen, die tags sorgfältig und vermutet, dass dies war eine Symfony-2-Anwendung. Die Date-Klasse bleibt die gleiche. Sie wire es, indem man die Lehre configuration-Objekt.
Überprüfen Sie die Lehre link für details.
YEAR()
,DAY()
undMONTH()
jetzt, da Ihre class-Dateien waren schon da, aber der Fehler ist entsprechend das gleiche..Dank an andy, mit dieser jetzt:
<
statt<=
? Dieses kleine detail ist nicht auf die Implementierung selbst, die war perfekt legit 2014 und ist noch im Jahre 2019.