我的学说实体有一个datetime
名为updated
. 每次将对象的(更改的)值写入数据库时,这应该获取当前时间。我知道如何在 MySql 中做到这一点,但我正在寻找一个学说/symfony 解决方案。
有没有办法
- 在将实例的 INSERT/UPDATE 发送到数据库之前挂钩。
- 将属性更新为
updated
当前时间,并确保将其写入数据库而不触发第二条 UPDATE 语句。
我的学说实体有一个datetime
名为updated
. 每次将对象的(更改的)值写入数据库时,这应该获取当前时间。我知道如何在 MySql 中做到这一点,但我正在寻找一个学说/symfony 解决方案。
有没有办法
updated
当前时间,并确保将其写入数据库而不触发第二条 UPDATE 语句。请参阅DoctrineExtensions的时间戳行为。有StofDoctrineExtensionsBundle可以将其集成到 Symfony 中。
您不需要任何扩展,只需使用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();
}
...