とWHERE句でDATE()関数を使用しますが、私は奇妙なエラーが表示されます。DQL
SELECT u FROM User u LEFT JOIN u.schedule s WHERE DATE(s.timestamp) = DATE(NOW())
例外がメッセージとともに教義によってスローされます
:
Expected known function, got 'DATE'
問題はthis bugと似ていますが、GROUP BY句のDATE()関数に対処しており、Doctrine 2.2のバグは閉じられています。現時点では、2.4-DEVの教義で例外があります。
クエリは、今日の予定のすべてのユーザーを選択するためのものです。このDQLを作成する方法はありますか?私はphpMyAdminでSQLバージョンをテストしましたが、クエリがエラーを発生させません。何が間違っているのでしょうか?
Doctrine2 DQLにはDATE()またはNOW()関数がありません:http://doctrine-orm.readthedocs.org/en/latest/reference/dql-doctrine-query-language.html#dql-functions 。しかし、あなたは本当に彼らの平等の2つのタイムスタンプを比較したいですか? – memoryleak
私はアポイントメント(日付+時間)を予定しており、今日のすべての患者をリストしたいと思います。これを行うには醜い方法があります: "今日"のPHPのDateTimeオブジェクトで文を準備してください。日時フィールドを「日付」と「時刻」の部分に分割します。私は最初の醜い部分を克服することができますが、2番目は抽象レイヤーの問題のためにDBに悩まされています。だからこそ私はこれがうまくいく解決策を望んだのです:)私は 'CAST(s.timestamp as DATE)をschedule_day FROM ... WHERE schedule_day =:today'として試しましたが、同様のエラーを返しました... –