原则修改的日期时间不持久



我尝试使用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();

你能试试吗?不过,我不确定这会有所作为。

相关内容

  • 没有找到相关文章

最新更新