2015-11-04 53 views
0

我已经定义在YAML lifecycleCallbacks如下:主义lifecycleCallbacks奇怪的行为

lifecycleCallbacks: 
    prePersist: [setCreatedAtValue] 
    preUpdate: [setUpdatedAtValue] 

的与各自的功能上面已经生成的实体如下:

/** 
* @ORM\PrePersist 
*/ 
public function setCreatedAtValue() 
{ 
    if($this->created_at == null) 
    { 
     $this->created_at = new \DateTime(); 
    } 
} 

它看起来都很好,对不对?然而,当我尝试打开奏鸣曲管理页面,我得到以下错误

[Semantical Error] The annotation "@ORM\PrePersist" in method AppBundle\Entity\Article::setCreatedAtValue() was never imported. Did you maybe forget to add a "use" statement for this annotation? 

我从来没有遇到过这一点,做什么有点混乱。我使用的symfony 2.7.6,学说ORM版本2.5.1,索纳塔管理2.3.7

任何帮助,将不胜感激

回答

2

既然你定义使用YAML你的回调,你鸵鸟政策需要定义它们再次使用注释。只需在该函数前用@ORM\PrePersist块删除注释,一切都会好起来的。

如果您想使用注释来定义您的教义属性,您需要先导入它们,然后才能使用它们。要做到这一点,你需要在你的文件的开头加入这一行:

use Doctrine\ORM\Mapping as ORM; 
+0

由于它的工作,我通常只是靠主义产生的实体和从未有过问题,到现在为止。看起来我需要密切关注更改日志。 –