2012-10-03 39 views
19

我在手冊中閱讀chapter關於Doctrine命名策略。不幸的是我不明白我必須把配置代碼放在哪裏。如何在Doctrine 2中配置命名策略

爲了得到一個下劃線命名策略,我應該使用此代碼:

$namingStrategy = new \Doctrine\ORM\Mapping\UnderscoreNamingStrategy(CASE_UPPER); 
$configuration()->setNamingStrategy($namingStrategy); 

我應該在哪裏放呢?

我在Symfony 2上 - 我想這對配置很重要。在config.yml

回答

33

,將其配置:

doctrine: 
    # ... 

    orm: 
     # ... 
     naming_strategy: doctrine.orm.naming_strategy.underscore 
+0

我認爲這隻適用於最新的開發版本(https://github.com/doctrine/DoctrineBundle/pull/90)。我在2.2版本中沒有包含這個配置選項。 – BetaRide

+0

我在Symfony SE 2.1.2上,其中包含支持此配置選項的DoctrineBundle。你還沒升級嗎? ;) –

+1

對不起,噪音。它工作正常。由於我有多個實體經理,因此我必須知道該選項是根據實體經理設置的。 – BetaRide

12

對於多個實體管理器:

doctrine: 
    # ... 
    orm: 
     # ... 
     entity_managers: 
      default: 
       naming_strategy: doctrine.orm.naming_strategy.underscore 
       # ... 
+1

在添加一個「默認」實體管理器後,遇到這個問題。 '無法識別的選項'naming_strategy, uto_mapping「在」doctrine.orm「' 非常愚蠢的我沒弄明白。但是快速搜索幫助我指出了這裏。謝謝! –

3

如果您使用的是console.php文件運行CLI你可以把它放在那裏。

<?php 

//something... 

$config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode); 

$namingStrategy = new UpperCamelCaseNamingStrategy(); 
$config->setNamingStrategy($namingStrategy); 

$em = EntityManager::create($dbParams, $config); 

//something else...