2012-09-06 55 views
0

我寫了一些類,併產生相關的表到DB與php app/console doctrine:generate:entities
我突然明白,我做錯了什麼,我已經改變了一些成類:有三個類(A,B, C)A連接到B和C是獨立的(現在)),但是我的模式必須將A連接到C,所以我以一致的方式修改所有類並啓動php app/console doctrine:schema:update --force學說更新問題的Symfony2

令人驚訝的是,我注意到數據庫沒有發生變化!
這怎麼可能?有教條文件,他緩存的東西或類似?

PS:實體之間的關係有很多一對多

+0

原則只能進行更改,它可以從您當前的實體重現,如新添加的字段。它無法檢測到已刪除的字段或不存在的外鍵。這些更改必須手動完成。 – Sgoettschkes

+0

@Sgoettschkes你確定沒有我可以去的文件,刪除一些行並重新啓動命令? – DonCallisto

回答

0

如果你改變一些線,你可以看到將通過輸入被執行,請求:

doctrine:schema:update --dump-sql 

如果理論不看你的修改,嘗試重新啓動apache或清除APC緩存。上次我有這個奇怪的錯誤時,它爲我做了詭計。 但是,教條將會看到你是否刪除或添加了一個字段,當然!

+0

我一直在遵循這個步驟,但沒有得到任何結果。 – DonCallisto

+0

檢查你的註釋合成器。我已經遇到了一些麻煩,因爲我在註釋開頭寫了/ *而不是/ **。 – Gmajoulet

+0

這可能是一個很好的提示。我會檢查 – DonCallisto

0

您是否嘗試使用更新的實體生成新數據庫以檢查它們是否正確?這樣做的一個簡單的方法,就是改變對parameters.ini文件數據庫名,並再次運行生成數據庫控制檯命令:

app/console doctrine:database:create 
app/console doctrine:schema:create 

如果新的數據庫是不正確有什麼不對您的實體。你如何定義它們(YAML,XML或註釋)?我使用YAML,有時doctrine:generate:entities操作無法正常工作。發生這種情況時,我必須刪除我的PHP實體並再次運行該命令。

除此之外,檢查Doctrine Documentation並確保您正確定義您的關聯遵循擁有和反面的規則。

+0

你的建議很好,但我想我不必再對新數據庫運行這些命令。這是因爲我刪除了一個關聯(當然沒有插入數據),關係表仍然存在...... – DonCallisto

+0

是的,這只是調試實體的快捷方式。這就是爲什麼我建議創建一個新的數據庫。 – luis

+0

我已經做了,但沒有任何反應,因爲可以預測...也許我有一個錯字或類似的東西......我會調查。 – DonCallisto