À l'aide de la fonction " DATE()` dans la Doctrine Querybuilder
J'ai besoin d'obtenir toutes les lignes où DATE(a.when)
correspond à la chaîne 2014-09-30
.
$builder = $this->em->createQueryBuilder();
$builder->select('a')
->from('Entity\Appointment', 'a')
->andWhere('a.when = :date')
->setParameter('date', $date);
a.when
est plein DATETIME
; :date
n'est qu'un string
(en DATE
format).
Suivantes et les variations ne fonctionne pas:
->andWhere('DATE(a.when) = :date')
Error: Expected known function, got 'DATE'
Ce qui est de la bonne utilisation ici?
double possible de la Doctrine De 2 Filtrer les résultats par un champ datetime date de la partie
pas un doublon. Je suis l'aide de la queryBuilder et le message d'erreur à l'aide de
L'erreur est la même, car il n'y a pas de
pas un doublon. Je suis l'aide de la queryBuilder et le message d'erreur à l'aide de
createQuery
et la queryBuilder
est le même: Error: Expected known function, got 'DATE'
.L'erreur est la même, car il n'y a pas de
DATE()
en DQL. Si vous utilisez la clause where de la duplication liée, votre démarche doit fonctionner aussi bien.OriginalL'auteur DanFromGermany | 2014-09-23
Vous devez vous connecter pour publier un commentaire.
C'est vraiment une question très fréquente.
Il s'avère que pas toutes les bases de données sql soutenir une fonction de DATE, de sorte que les bonnes personnes en charge de la Doctrine a décidé de ne pas le soutenir nativelly.
Genre de ils ne veulent parce qu'il aurait sauvé un tas de gens un montant équitable de l'effort.
Donc ajouter ce lieu magique de la classe à votre projet:
Puis fil dans la doctrine section de votre 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
Il y a d'autres bundles là-bas avec plus de fonctions sql. Curieusement, la première fois que j'ai regardé il y a quelques années, aucun d'entre eux ont eu une Date définie. Donc, je viens de faire mon propre.
====================================================================
Mise à jour 01
Je n'ai pas vérifier les étiquettes attentivement et suppose qu'il s'agit d'une application Symfony 2. La classe Date reste la même. Vous fil jusqu'par l'obtention de la doctrine de l'objet de configuration.
Vérifier la Doctrine lien pour plus de détails.
Vous n'êtes pas la modification de la bibliothèque de base. Vous êtes juste l'ajout d'une fonction personnalisée. Rien à l'intérieur de la Doctrine est en cours de modification.
Je ne peux pas le faire "branché". Je n'ai pas ce fichier de configuration. J'ai essayé avec
YEAR()
,DAY()
etMONTH()
maintenant, parce que leurs fichiers de classe étaient déjà là, mais l'erreur est le même..Voir ma mise à jour. Il vous suffit d'ajouter la Doctrine de l'objet de configuration.
Ah ok, cette fois c'est du travail, nous avons obtenu de la Doctrine accroché dans ZF1.
OriginalL'auteur Cerad
Merci à andy, à l'aide de ce maintenant:
si vous êtes downvoting parce que j'ai fait
<
au lieu de<=
? Ce petit détail n'est pas affecter la mise en œuvre elle-même qui est parfaitement légitime en 2014 et est toujours en 2019.J'ai édité votre réponse & supprimé downvote. Mais je suis en désaccord c'est tout petit détail. Fermeture / ouverture des intervalles de faire une grosse affaire, dans la vraie vie 🙂
OriginalL'auteur DanFromGermany