2014-01-13 52 views
1

我有用Doctrine ORM和ZF2生成的實體類。zf2生成實體與教條ORM

我改變了一個表結構,我想更新一個實體類,所以我試圖重新生成實體類,但它不工作。

我用下面的代碼:

vendor/doctrine/doctrine-module/bin/doctrine-module orm:convert-mapping --namespace="Album\Entity\" --force --from-database annotation ./module/Album/src/clear

我得到了錯誤:

[Doctrine\ORM\Mapping\MappingException]
Property "status" in "Album\Entity\TestRun" was already declared, but it must be declared only once
orm:convert-mapping [--filter="..."] [--force] [--from-database] [--extend[="..."]] [--num-spaces[="..."]] [--namespace[="..."]] to-type dest-path

我想如果你改變了重新生成實體類特定表

+0

應該有沒有兩個forei gn鍵表 – khanz

回答

0

您實體文件的結構簡單 \vendor\bin\doctrine-module orm:schema-tool:update --force將根據您的實體定義更改表格。

如果你仍然想重新創建表,只需從你的mysql中刪除表並運行update命令。您可能還有一些緩存文件,因此清除這些文件也可能是一個好主意。

您可以清除像這樣完整的緩存:

\vendor\bin\doctrine-module orm:clear-cache:query 
\vendor\bin\doctrine-module orm:clear-cache:result 
\vendor\bin\doctrine-module orm:clear-cache:metadata 
+0

中的同一列他想從更改的數據庫表更新實體類,而不是如您所述的相反方向。 – vlr

+0

這可能是可能的,但在我看來是不好的做法。結構變化應該在實體內完成。然後通過命令行更新。 – cptnk

0

正如上面提到的可能是一個不好的做法,但儘管如此,我用下面的命令來實現你問的結果是:

vendor\bin\doctrine-module orm:convert-mapping --filter='Evaluation' --namespace='MyModule\Entity\\' --force --from-database annotation ./module/MyModule/src/ 

和另一個命令生成getter和setter:

vendor\bin\doctrine-module orm:generate-entities --filter='Evaluation' ./module/MyModule/src/ --generate-annotations=true