2014-02-27 191 views
1

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

回答

0

在生成類之後,您可以安全地刪除註釋和相應的use語句。

命令

app/console doctrine:generate:entities 

...只是一個小幫手創建類和/或getter/setter方法。

它並不總是100%準確。你不應該爲此太多而煩惱。這只是一個幫手...

無論如何,你仍然需要自己編寫回調函數。

+0

謝謝。但我認爲這是一切都很好。 – user3359229