我有一个数据库列,叫做 modified
与 ON UPDATE CURRENT_TIMESTAMP
定义。
当我修改并持久化现有对象时,列会保持旧的值,因为它已经在对象属性中被设置了。有没有办法告诉Doctrine在持久化时不要设置该对象属性?
我在使用 unset
但这将使代码变得混乱,因为不是所有实体都有这个属性。
unset($object->modified);
$entityManager->persist($object);
通过添加一个 LifecycleEvent
.
在我 ClassMetadataBuilder
我有一个创建字段的方法。
public function addModifiedTimeField(): void {
$this->createField("modified", "timestamp")->build();
$this->addLifecycleEvent("unsetModified", "preFlush");
}
而实体需要 modified
扩场 Versionable
定义方法的类。
abstract class Versionable extends JsonEncodable {
protected $modified;
public function getModified() {
return $this->modified;
}
public function unsetModified(): void {
$this->modified = null;
}
}