2016-03-13 20 views
1

我使用Symfony 2.8.3。與學說ORM 2.4.8。 我使用YAML來定義我的數據模型。我如何獲得Doctrine或Symfony來生成`extends`語句

我有像這樣映射超:

AppBundle\Entity\Location: 
     type: mappedSuperclass 
     fields: 
      street: 
       type: string 
       length: '100' 

我從這個超類派生像這樣:

AppBundle\Entity\Building: 
     type: entity 
     extends: AppBundle\Entity\Location 
     id: 
      id: 
       type: integer 
       id: true 
       generator: 
        strategy: AUTO 

我現在期待一個大廈有兩個ID和街道的屬性。

app/console doctrine:generate:entities AppBundle這使我得到預期的PHP文件。然後與app/console doctrine:schema:update --force我得到一個building數據庫表如預期,但它只有一個id列和沒有street列。

後,才改變Building.php

class Building 

class Building extends Location 

並重新運行app/console doctrine:schema:update --force我得到的building表中的列street

我希望Doctrine(或Symfony)爲我產生這個extends聲明,因爲我在de-YAML源文件中指定了extends

我在做什麼錯?

或者,如何獲得Doctrine或Symfony生成extends聲明?

回答

2

對此的簡短回答:Doctrine的ORM(以及擴展的Symfony包)不會爲您生成擴展語句,這是您必須手動添加和維護的內容。之所以這樣做,主要是因爲Doctrine ORM作爲一個項目不想支持臨時代碼生成。看看this GitHub issues thread關於PSR-4在Doctrine中的支持,以瞭解項目維護者對此的看法。

,這種理論產生於你項目的業務/域對象,所以它是由你來承擔責任維護他們,在這種情況下,執行你的類層次結構的實體。

另外,沒有什麼能阻止您在支持您的用例的Doctrine映射之上擴展/創建自己的代碼生成器。

+0

謝謝。那不是我那麼:) –

相關問題