我尝试使用modify
函数修改对象的日期时间字段
$em = $this->getDoctrine()->getManager();
$end = $session->getEndDate();
$session->setEndDate($end->modify('+10 seconds'));
$em->persist($session);
$em->flush();
这是会话类中$endDate字段的设置器:
/**
* @param DateTime $endDate
*/
public function setEndDate(DateTime $endDate)
{
$this->endDate = $endDate;
}
为什么结束日期更改不能保存到数据库?
Doctrine 不会保存对现有 DateTime 实例的更改(我认为是由于 PHP 相等性测试的内部结构(
如果克隆对象,然后将其重新设置,应该可以工作。还是在二传器中克隆它?
请参阅原则2 ORM不会保存对日期时间字段的更改
您需要刷新它:
$em->flush($session);
持久仅适用于尚未创建的实体。
更新:
modify
方法不返回任何内容,影响指定对象实例,因此您只需尝试:
$end = $session->getEndDate();
$end->modify('+10 seconds');
$em->flush();
希望这个帮助
您需要添加合并或刷新才能保存更新
$end = $session->getEndDate();
$session->setEndDate($end->modify('+10 seconds'));
$em->persist($session);
$em->flush();
根据@Cerad的评论,我想知道这是否适合您:
$em = $this->getDoctrine()->getManager();
$end = new DateTime( $session->getEndDate() );
$end->modify('+10 seconds');
$session->setEndDate( $end );
$em->persist($session);
$em->flush();
你能试试吗?不过,我不确定这会有所作为。