Symfony2 と Doctrine を使用しています。
日付フィールドがあります。これは次のとおりです。
/**
* @ORM\Column(type="date")
*/
protected $date;
私のフォームでは、テキスト フィールドを使用して Chrome のデフォルトの日付ピッカーを回避していますが、データベースに DateTime オブジェクトを挿入しています。
if ($request->isMethod('POST')) {
$form->bind($request);
//Convert string date to DateTime object and send it to database as object
$dateObj = \DateTime::createfromformat('d-m-Y', $expense->getDate());
$expense->setDate($dateObj);
// ...
そして、特定の日付のすべてのアイテムを検索したい:
public function findExpensesForDate($user, $date)
{
$q = $this
->createQueryBuilder('e')
->where('e.date = :date')
->andWhere('e.user = :user')
->setParameter('date', $date)
->setParameter('user', $user)
->getQuery();
return $q->getResult();
}
次のように呼び出します。
$expenses_for_today = $this->repository->findExpensesForDate($this->user, $today);
何も返さない
$today = new /DateTime();
次の場合に結果を返します。
$today_obj = new /DateTime();
$today = $today_obj->format('Y-m-d');
では、日付をオブジェクトとして指定すると、これが機能しないのはなぜですか? 日付ファイルを使用する理由は、DateTime オブジェクトのクエリを利用するためではないでしょうか? 些細で重要な何かが欠けていると思いますが、何がわからないか、状況をよく理解していません。私の理解は次のとおりです。フィールドは日付型であるため、DateTime オブジェクトを挿入する必要があり、クエリを実行するときに DateTime オブジェクトも挿入する必要があります。これを修正するのを手伝ってもらえますか?
PS: フィールドを日時に変更してみました:
/**
* @ORM\Column(type="datetime")
*/
protected $date;
しかし、変化はありませんでした。
そして、文字列でクエリを実行しても問題ありませんか? その方法でクエリを実行するときにオブジェクトを使用する利点はありますか?