我尝试使用modify
函数
$em = $this->getDoctrine()->getManager();
$end = $session->getEndDate();
$session->setEndDate($end->modify('+10 seconds'));
$em->persist($session);
$em->flush();
这是Session类中$ endDate字段的setter:
/**
* @param \DateTime $endDate
*/
public function setEndDate(\DateTime $endDate)
{
$this->endDate = $endDate;
}
为什么结束日期更改不能保留到数据库?
答案 0 :(得分:6)
Doctrine不会保存对现有DateTime实例的更改(由于我认为PHP的等式测试的内部结构)
如果克隆对象然后将其设置回来,应该可以正常工作。或者在setter中克隆它?
答案 1 :(得分:5)
你需要冲洗它:
$em->flush($session);
持久性仅适用于尚未创建的实体。
更新:
modify
方法不返回任何内容,影响指定对象实例,因此您只需尝试:
$end = $session->getEndDate();
$end->modify('+10 seconds');
$em->flush();
希望这个帮助
答案 2 :(得分:1)
您需要添加合并或刷新以保存更新
$end = $session->getEndDate();
$session->setEndDate($end->modify('+10 seconds'));
$em->persist($session);
$em->flush();
答案 3 :(得分:0)
基于@Cerad的评论,我想知道这是否适合你:
$em = $this->getDoctrine()->getManager();
$end = new \DateTime( $session->getEndDate() );
$end->modify('+10 seconds');
$session->setEndDate( $end );
$em->persist($session);
$em->flush();
你可以尝试一下吗?我不确定它会有所作为。