2015-08-20 55 views
1

首先,我對Symfony2完全陌生。Symfony2 - 爲現有實體添加新字段

我創建了一個實體 - >基於該實體創建了一個表 - >使用該實體創建了一個表單。

我現在已經意識到我需要在窗體中添加一個字段。所以,我做了以下內容:

增加新的屬性 - >添加了ORM註解 - >生成的getter和setter方法 - >運行「PHP應用程序/控制檯學說:架構:更新」

這導致以下例外:「名稱爲'XXX'的表已存在」

因此沒有更新。任何想法我做錯了什麼?下面是我添加到實體屬性:

/** 
* @var text 
* 
* @ORM\Column(name="description", type="text") 
* 
* @Assert\NotBlank(message="Please insert a description") 
* @Assert\Length(max=100) 
* 
*/ 
private $description; 
+0

我也試過這樣:http://stackoverflow.com/questions/ 14941358/add-a-column-to-an-existing-entity-in-symfony但是沒有工作 – Developer1

+0

你在類註解中@ORM \ Table()裏面有什麼? – Dheeraj

+1

你確定你運行了'php app/console doctrine:schema:update'嗎?首先,您需要標記'php app/console doctrine:schema:update --force'來實際運行該命令。其次,您遇到的異常聽起來更像您在現有架構上運行'php app/console doctrine:schema:create'時得到的東西;例如'SQLSTATE [42S01]:基表或視圖已經存在:1050表'my_table'已經存在'。 –

回答

1

嘗試使用Doctrine Migrations Bundle。您正在嘗試執行的操作 - 對已部署的數據庫進行更改 - 稱爲「數據庫遷移」。我發現這個軟件包非常有幫助。

而不是運行「app/console doctrine:schema:update」,您將運行「app/console doctrine:migrations:diff」,它將比較您的數據庫模式和更新後的實體並生成sql代碼恢復同步。

0

我知道這是一個老問題。但我寫,因爲這對其他人可能有用。

可能你沒有在你的項目中使用註釋。可能你的項目配置爲使用xml或yml。

你必須在$ proyect_home /應用/配置/ config.yml檢查您configuation並在ORM區寫:

orm: 
    .... 
    mappings: 
    AppBundle: 
     type: annotation