>UPDATE:问题迁移到这里:更"通用"和可以理解。
我的实体有一个字段,映射到教义Date
类型。
/** @ORM'Column(type="date") */
protected $from;
Doctrine 正确地将 Mysql 列创建为Date
(没有时间),就像 2012-12-18
一样。
我已经修改了 setter,以创建 DateTime
对象:
public function setFrom($from){
$this->from = new 'DateTime($from);
}
如果修改,我使用 EntityManager->merge()
来更新实体,但它总是更新Date
字段,因为存储的日期总是与在 setter 中创建的DateTime
不同 ( '2012-12-18' !== "2012-07-08 00:00:00"
)。
如果日期没有更改,有一种方法可以避免更新?
您可以在资源库中检查日期是否已更改,以防止创建新的日期时间对象:
public function setFrom($from){
if (!$this->from || $form != $this->from->format('your date format')) {
$this->from = new 'DateTime($from);
}
}