Doctrine修改的DateTime不会保留

bla*_*lah 6 php datetime symfony doctrine-orm

我尝试用modify函数修改对象的DateTime字段

    $em = $this->getDoctrine()->getManager();
    $end = $session->getEndDate();
    $session->setEndDate($end->modify('+10 seconds'));
    $em->persist($session);
    $em->flush();
Run Code Online (Sandbox Code Playgroud)

这是Session类中$ endDate字段的setter:

  /**
    * @param \DateTime $endDate
    */
   public function setEndDate(\DateTime $endDate)
   {
       $this->endDate = $endDate;
   }
Run Code Online (Sandbox Code Playgroud)

为什么结束日期更改无法持久保存到数据库?

ben*_*ley 6

Doctrine不会将更改保存到现有的DateTime实例中(由于我认为PHP的等同性测试内部)

如果克隆对象然后将其重新设置,则应该可以使用。还是将其克隆到二传手中?

请参阅Doctrine2 ORM不会将更改保存到DateTime字段


Mat*_*teo 5

你需要冲洗它:

$em->flush($session);
Run Code Online (Sandbox Code Playgroud)

持久性仅适用于尚未创建的实体.

更新:

modify方法不返回任何内容,影响指定对象实例,因此您可以简单地尝试:

$end = $session->getEndDate();
$end->modify('+10 seconds');
$em->flush();
Run Code Online (Sandbox Code Playgroud)

希望这有帮助