2016-01-27 37 views
0

我試圖學習交響樂的基礎知識,並遇到了讓我感到困惑的問題。Symfony:將專欄添加到原則實體

我嘗試將數據寫入到一個SQL表,如下(大部分)的從文檔(http://symfony.com/doc/current/book/doctrine.html)的說明。我創建了一個實體通過

$ php bin/console doctrine:generate:entity 

它正確映射到我的數據庫表,我可以讀寫,沒問題。之後,我加入到我的表中的列和相應行到我的實體:

/** 
* @var string 
* 
* @ORM\Column(name="User_Credentials", type="text") 
*/ 
private $userCredentials; 

然後我試圖創建getter和setter方法,但是是沒有變化的,只是我的實體的備份。所以我自己添加了getter和setter,但是當試圖寫入數據庫時​​,相應的列被忽略,保留爲空。沒有錯誤給出。我檢查並重新檢查了拼寫錯誤或其他sytax錯誤,但找不到任何錯誤。在做

$ php bin/console doctrine:schema:update --dump-sql 

我得到

ALTER TABLE st_users DROP User_Credentials; 

因此,似乎我的專欄被完全忽略。我重新清除了緩存,這並沒有改變。顯然,我輸了。任何暗示正確的道路將不勝感激。

謝謝。

回答

5

您可以使用DoctrineMigrationsBundle此操作。該軟件包將管理您的數據庫操作。 (刪除,修改,創建等)

無論如何,當你添加一個新的列,你可以試試這個:php app/console doctrine:schema:update --force

+0

那麼,這從表中刪除了我的新專欄。無論如何,我會考慮遷移。我想我需要安裝該捆綁包? – 124c41

+0

是的,我提供該捆綁的工作。你會看到它會拯救你的生命:) –

+0

我安裝了捆綁包,將它添加到內核並運行'php bin/console doctrine:migrations:diff'。它告訴我在你的地圖信息中沒有檢測到變化。模式:更新沒有改變表中的任何東西 - 仍是同樣的問題,它不會檢測到我的更改。 – 124c41

3

好了,這是令人尷尬......

無論如何,如果別人是有同樣的問題:我在'@ORM \ Column'註釋之前有一個Tab,看起來解析器無法處理它。刪除標籤和添加空間的技巧。

莫特的回答是正確的,無論如何,所以我將其標記爲正確的答案。

0

我加入到我的表中的列和相應行到我的實體

Symfony的概念是隻列到實體補充,而不是表本身。

然後,當你執行

php bin/console doctrine:schema:update --force 

的Symfony會發現你有一個新列,它會添加列到表自動

PS。關於清除緩存。如果在Symfony中啓用apc緩存,則還需要重新啓動Apache或php-fpm進程。否則,它將忽略新的註釋。