2016-07-04 187 views
1

我有實體(S)EntityHtml(S)實體具有一到一個 relashionship(實體將元數據存儲和EntityHtml行爲像一個緩存,存儲準備好的HTML塊用於渲染)。Symfony的3:不能讓工作關係

我已經定義在實體類的關係:

/** 
    * @ORM\OneToOne(targetEntity="EntityHtml") 
    * @ORM\JoinColumn(name="entityId", referencedColumnName="entityId") 
    */ 
    private $entityHtml; 

,但它無法正常工作。我也有一種感覺,那些註釋完全不起作用,因爲改變它們對應用程序的可用性沒有影響。

另一方面,與.orm.xml(s)混合反映了應用程序的工作方式。

  • 我能告訴的Symfony基礎上修改的註釋更新ORM個XML?
  • 我是否應該將關係meta複製到XML?
  • 在兩個XML註釋或者它選擇一個源是否的Symfony使用信息?

config.yml是默認的:

# Doctrine Configuration 
doctrine: 
    dbal: 
     driver: pdo_mysql 
     host:  "%database_host%" 
     port:  "%database_port%" 
     dbname: "%database_name%" 
     user:  "%database_user%" 
     password: "%database_password%" 
     charset: UTF8 
     # if using pdo_sqlite as your database driver: 
     # 1. add the path in parameters.yml 
     #  e.g. database_path: "%kernel.root_dir%/data/data.db3" 
     # 2. Uncomment database_path in parameters.yml.dist 
     # 3. Uncomment next line: 
     #  path:  "%database_path%" 

    orm: 
     auto_generate_proxy_classes: "%kernel.debug%" 
     naming_strategy: doctrine.orm.naming_strategy.underscore 
     auto_mapping: true 
+1

每次更新註釋時,都需要更新模式('php bin/console doctrine:schema:update'我相信)。是你做的嗎? – Pete

+0

@PietervandenHam我做了,但它沒有改變XML或db一點。 –

+0

你能告訴我們你的'config.yml'嗎? (相關部分) – Pete

回答

0

這有什麼區別,如果你試試這個:

/** 
    * @ORM\OneToOne(targetEntity="EntityHtml") 
    * @ORM\JoinColumn(name="entity_Id", referencedColumnName="entityId") 
    */ 

我在想, 「ENTITYID」 是ID在EntityHtml中,你需要在JoinColumn中指定一個不同的「名稱」值。我想我遇到了這個問題。

試試吧 - 我不確定它是否會起作用。

+0

我相信這裏的_name_表示引用表名中的列名。爲了不混合多個命名,我給列駱駝名稱(沒有下劃線)。 –

0

想出這一個。這是一個配置問題。爲了使註釋的工作原理(XML是默認選項),你必須明確地對其進行配置:

# Doctrine Configuration 
doctrine: 
    ... 

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

可惜的是,在教程不是規定。

+0

Voilà,它的工作原理! –