ile WHERE deyimindeki bir TARİH() işlevini kullanın Garip bir hata alıyorum:DQL
SELECT u FROM User u LEFT JOIN u.schedule s WHERE DATE(s.timestamp) = DATE(NOW())
istisna mesajı ile Doktrin tarafından atılır
:
Expected known function, got 'DATE'
Sorun, this bug'a benzer gibi görünüyor, ancak bu, GROUP BY deyiminde DATE() işlevini ele alıyor ve Doctrine 2.2 için hata kapatıldı. Şu anda, istisnai doktrin 2.4-DEV ile olsun.
Sorgu, bugün için planlanan tüm kullanıcıları seçmek içindir. Bu DQL'yi oluşturabilmem için herhangi bir yolu var mı? PhpMyAdmin'de SQL sürümünü test ettim ve orada sorgu bir hata oluşturmuyor. Ne yanlış olabilir?
Doctrine2 DQL'in DATE() veya NOW() işlevi yok: http://doctrine-orm.readthedocs.org/en/latest/reference/dql-doctrine-query-language.html#dql-functions . Ama gerçekten iki zaman damgasını eşitlikle karşılaştırmak istiyor musun? – memoryleak
Randevu almak için hastaları planladım (tarih + saat) ve bugün tüm hastaları listelemek istiyorum. Bunu yapmanın çirkin bir yolu vardır: ifadeyi "bugün" için bir php 'DateTime 'nesnesiyle hazırlayın. Vetetime alanını "tarih" ve "zaman" bölümüne ayırın. İlk çirkin parçanın üstesinden gelebilirim, fakat ikincisi sadece bir db katmanı problemi yüzünden db'nize batıyor. İşte bu yüzden bu işe yarayacak bir çözüm olmasını ümit ettim :) Program_day FROM olarak bir SELECT CAST (DATE olarak DATE) denedim ... WHERE program_day =: bugün 'ancak benzer bir hata döndürdü ... –