Поле даты Доктрины - как написать запрос
используя 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');
Так почему, когда я даю дату в качестве объекта, это нет работаешь? Isn»t причина использования поданной даты состоит в том, чтобы воспользоваться запросами с объектами DateTime? Я предполагаю, что я'Мне не хватает чего-то тривиального и важного, но я просто могуне вижу что или яЯ не очень хорошо понимаю ситуацию. Мое понимание таково: поле имеет тип date, поэтому я должен вставить в него объекты DateTime, а при запросе я должен также указывать объекты DateTime. Можете ли вы помочь мне исправить это?
П.С .: Я пытался изменить поле на datetime:
/**
* @ORM\Column(type="datetime")
*/
protected $date;
но не было никаких изменений.
И вообще это нормально и хорошо, чтобы запросить строку? Получу ли я преимущество от использования объектов при выполнении запросов таким образом?