2012-10-03 83 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...