Doctrine2。生成生命周期

问题描述:

Im使用YAML来描述实体元数据。就像这样:Doctrine2。生成生命周期

lifecycleCallbacks: 
    prePersist: [ doSome ] 
    preUpdate: [ doSome ] 

生成的实体类如下所示:

/** 
* @ORM\PrePersist 
*/ 
public function doSome() 
{ 
} 

这是所有工作正常,但此标注 “@ORM” 困惑我。不应该是这样的:

/** 
* @ORM\PrePersist 
* @ORM\PreUpdate 
*/ 
public function doSome() 
{ 
} 

如何摆脱@ORM注释?

图元文件名为table.orm.yml。可能是这个原因的问题?但我不知道,这是怎么做的另一种方式。如果我命名文件像table.dcm.yml,我有异常,找不到元数据。

+0

你的工作流程是什么?你先创建'Entity.orm.yml'映射文件,然后运行'app/console doctrine:generate:entities'吗?现在,您不希望在生成的类中使用生命周期事件注释或者有什么问题? – nifr

+0

我在“src \ BundleName \ Resource \ config \ doctrine”文件夹中有文件“Entity.orm.yml”。运行命令“app/console doctrine:generate:entities”之后,我在src \ BundleName \ Entity中创建了Entity.php文件。就这样。 – user3359229

+0

我想或者两者都添加注释(@ ORM/prePersist,@ ORM/preUpdate),或者他们根本就没有。 – user3359229

在生成类之后,您可以安全地删除注释和相应的use语句。

命令

app/console doctrine:generate:entities 

...只是一个小帮手创建类和/或getter/setter方法。

它并不总是100%准确。你不应该为此太多而烦恼。这只是一个帮手...

无论如何,你仍然需要自己编写回调函数。

+0

谢谢。但我认为这是一切都很好。 – user3359229