Doctrine2文档中关于preUpdate
事件的说明说道
这个事件有一个强大的特性,即通过一个
PreUpdateEventArgs
实例来执行,其中包含对该实体计算出的更改集的引用。这意味着您可以访问该实体已更改的所有字段及其旧值和新值。
听起来很有用!那我该怎么做:
/**
* Acme\TestBundle\Entity\Article
*
* @ORM\Entity
* @ORM\HasLifecycleCallbacks
*/
class Article
{
// ...
/**
* @ORM\PreUpdate
*/
public function preUpdate(\Doctrine\ORM\Event\PreUpdateEventArgs $eventArgs)
{
if ( /* use $eventArgs here */ )
$this->updatedAt = new \DateTime();
}
// ...
}
但没有运气 - 没有传递参数:
Catchable Fatal Error: 参数 1 必须是
Doctrine\ORM\Event\PreUpdateEventArgs
的实例,未给出,调用了该参数的方法:
Acme\TestBundle\Entity\Article::preUpdate()
,这个方法在
...\vendor\doctrine\lib\Doctrine\ORM\Mapping\ClassMetadataInfo.php
的第 1540 行被调用,在...\src\Acme\TestBundle\Entity\Article.php
的第 163 行被定义。
我猜 Symfony2 中必须以其他方式实现。我该怎么做?
2.4
开始在生命周期注释方法中传递LifecycleEventArgs
。因此,请检查您的依赖项。这是原始问题的链接:http://www.doctrine-project.org/jira/browse/DDC-2186 - Dimitry K