Events 事件侦听器中的Change not changed属性

Events 事件侦听器中的Change not changed属性,events,symfony,doctrine-orm,Events,Symfony,Doctrine Orm,当我试图在Doctrine事件侦听器中为以前未更改的属性设置新值时,出现了一个错误,原因是PreUpdateEventArgs::assertValidField。它说我无法更改在事件触发之前未更改的属性 但是如果我不能改变任何我想改变的事情,那么使用生命周期又有什么意义呢?我错过了什么?也许有另一种方法来改变对象的值而不是setNewValue方法 UPD @joaoalves好的,我会更详细地解释我的问题。我有一个文档A(不是实体,因为我正在使用MongoDB,但在这个上下文中它并不重要),

当我试图在Doctrine事件侦听器中为以前未更改的属性设置新值时,出现了一个错误,原因是
PreUpdateEventArgs::assertValidField
。它说我无法更改在事件触发之前未更改的属性

但是如果我不能改变任何我想改变的事情,那么使用生命周期又有什么意义呢?我错过了什么?也许有另一种方法来改变对象的值而不是setNewValue方法

UPD

@joaoalves好的,我会更详细地解释我的问题。我有一个文档A(不是实体,因为我正在使用MongoDB,但在这个上下文中它并不重要),它有两个属性:A::$foo和A::$bar。两者都是以任何类型归档的

当我更改其中一个文件时,将触发preUpdate事件。例如,我更改了$foo属性。现在要修改它,我必须使用前面解释的
$event->setNewValue
。例如:

public function preUpdate($event)
{
    $A = $event->getDocument();
    $A->setFoo('new value'); // this WILL NOT WORK because we have to use setNewValue()
    $event->setNewValue('foo', 'new value'); // WORKS as expected.
}
这是我的问题。现在,如果我想修改preUpdate中的::$条,我将得到一个异常:

字段“foo”不是PreUpdateEventArgs中文档“a”的有效字段

引发此异常的原因是
PreUpdateEventArgs
documentChangeSet
不包含


那么如何修改条形图属性?

您能给我们看一些代码吗?是的,在preUpdate事件中,您可以在对象上设置值。问题是,如果您没有更改实体上的任何内容,那么预更新事件将不会触发,因为您没有更改任何内容。@joaoalves我已经更新了问题我不知道您是否已经找到了解决方案。setNewValue方法仅适用于已更改的字段。更改未更改字段的值的一个变通方法是回答这个问题:希望有帮助you@joaoalves谢谢,这似乎是答案。