Doctrine2不更新DateTime

1 symfony doctrine-orm symfony-2.1

我想我已经找到了一个找不到解决方法的错误..

我尝试更新datetime字段,但不更新它,不会给我一个错误。

移动所有其他字段可以正确修改它们,但是datetime字段没有。

$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('MyOwnBundle:Events')->find($id);
$In = $entity->getDateIn();
$In->modify('+1 day');
$entity->setDateIn($In);
$em->flush();
Run Code Online (Sandbox Code Playgroud)

我也尝试直接插入DateTime()对象,但根本不更新!

$entity->setDateIn(new \DateTime());
Run Code Online (Sandbox Code Playgroud)

有解决这个问题的方法吗?

我安装了symfony 2.1和学说2.3.3

EDIT 事件实体:

/**
 * Events
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="My\OwnBundle\Entity\EventsRepository")
 */
 class Events
 {
/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 * @var string
 *
 * @ORM\Column(name="name", type="string", length=100)
 */
private $name;

/**
 * @var string
 *
 * @ORM\Column(name="description", type="text")
 */
private $description;

/**
 * @var \DateTime
 *
 * @ORM\Column(name="dateIn", type="datetime")
 */
private $dateIn;

/**
 * @var \DateTime
 *
 * @ORM\Column(name="dateOut", type="datetime")
 */
private $dateOut;

....

/**
 * Set dateIn
 *
 * @param \DateTime $dateIn
 * @return Events
 */
public function setDateIn($dateIn)
{
    $this->dateIn = $dateIn;

    return $this;
}

/**
 * Get dateIn
 *
 * @return \DateTime 
 */
public function getDateIn()
{
    return $this->dateIn;
}

/**
 * Set dateOut
 *
 * @param \DateTime $dateOut
 * @return Events
 */
public function setDateOut($dateOut)
{
    $this->dateOut = $dateOut;

    return $this;
}

/**
 * Get dateOut
 *
 * @return \DateTime 
 */
public function getDateOut()
{
    return $this->dateOut;
}

....
Run Code Online (Sandbox Code Playgroud)

Car*_*enR 5

Modify()方法不会更新实体,因为Doctrine通过引用跟踪DateTime对象。您需要克隆现有的DateTime对象,并为其提供新的引用。修改新的时间戳,然后将其设置为新的时间戳。

有关更多信息,请参阅《Doctrine文档》中的文章。