我正在使用 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;
但没有任何变化。
用字符串查询是否可以并且很好?以这种方式查询时,我会获得使用对象的优势吗?