我正在按照 http://tutorial.symblog.co.uk/docs/extending-the-model-blog-comments.html 教程进行学习。在博客和评论实体中声明了预更新,但我并不真正了解它们的目的,例如:
public function __construct()
{
$this->setCreated(new DateTime());
$this->setUpdated(new DateTime());
$this->setApproved(true);
}
/**
* @ORMpreUpdate
*/
public function setUpdatedValue()
{
$this->setUpdated(new DateTime());
}
如果构造执行相同的工作,那么 setUpdateValue() 中的意义何在?
另外,当我运行时,我运行$ php app/console doctrine:generate:entities BloggerBlogBundle
收到错误:
[DoctrineCommonAnnotationsAnnotationException]
[Semantical Error] The annotation "@DoctrineORMMappingpreUpdate" in method BloggerBlogBundleEntityComment::
setUpdatedValue() does not exist, or could not be auto-loaded.
构造函数仅在创建实体时调用,而不是在从 db 加载时调用(doctrine 为此使用 unserialize()
)。 setUpdatedValue()
在保存实体之前设置 updated
属性(created
保持不变)。