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)
Modify()方法不会更新实体,因为Doctrine通过引用跟踪DateTime对象。您需要克隆现有的DateTime对象,并为其提供新的引用。修改新的时间戳,然后将其设置为新的时间戳。
有关更多信息,请参阅《Doctrine文档》中的文章。
| 归档时间: |
|
| 查看次数: |
2901 次 |
| 最近记录: |