如何防止 Doctrine 覆盖具有生成值的列?
How to prevent Doctrine from overriding column with generated value?
我有一个名为 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
class。
abstract class Versionable extends JsonEncodable {
protected $modified;
public function getModified() {
return $this->modified;
}
public function unsetModified(): void {
$this->modified = null;
}
}
我有一个名为 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
class。
abstract class Versionable extends JsonEncodable {
protected $modified;
public function getModified() {
return $this->modified;
}
public function unsetModified(): void {
$this->modified = null;
}
}