我的学说实体有一个名为datetime
的{{1}}属性。这应该得到每次(更改)对象的值写入DB的当前时间。我知道如何在MySql中执行此操作,但我正在寻找一个doctrine / symfony解决方案。
有没有办法
updated
属性更新为当前时间,并确保将其写入数据库而不触发第二个UPDATE语句。答案 0 :(得分:5)
查看Timestampable behavior的DoctrineExtensions。将StofDoctrineExtensionsBundle集成到Symfony中。
答案 1 :(得分:1)
您不需要任何扩展程序,只需使用Lifecycle Callbacks即可。
基本上,标记您的实体它具有使用HasLifecycleCallbacks
注释配置的事件回调:
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\HasLifecycleCallbacks
* ...
*/
class MyEntityClass {
...
然后标记要在发生的特定事件上运行的实例方法,例如设置updated
:
...
class MyEntityClass {
...
/**
* @ORM\PreUpdate
*/
public function onPreUpdate() {
$this->updated = new \DateTime();
}
...