2012-10-03 38 views
19

Leí el chapter sobre estrategias de nombres de Doctrine en el manual. Lamentablemente, no entiendo dónde tengo que poner el código de configuración.Cómo configurar la estrategia de nombres en Doctrine 2

el fin de obtener una estrategia de nombrar subrayado que debería utilizar este código:

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

¿Dónde debo poner esto?

Estoy en Symfony 2 - Supongo que esto importa cuando se trata de la configuración.

Respuesta

33

configurarlo en config.yml:

doctrine: 
    # ... 

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

Creo que esto solo funciona en la última versión del desarrollador (https://github.com/doctrine/DoctrineBundle/pull/90). Estoy en 2.2, que no incluye esta opción de configuración. – BetaRide

+0

Estoy en Symfony SE 2.1.2 que incluye DoctrineBundle que admite esta opción de configuración. ¿Aún no has actualizado? ;) –

+1

Perdón por el ruido. Está funcionando bien. Como tengo varios administradores de entidades, tuve que aprender que la opción se establece por administrador de entidades. – BetaRide

12

Para múltiples gestores de entidad:

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

Se topa con este problema, después de agregar un administrador de entidades "predeterminado". 'Opciones no reconocidas' naming_strategy, uto_mapping 'en' doctrine.orm '' Bastante tonto, no lo resolví. Pero una búsqueda rápida me ayudó a señalar aquí. ¡Gracias! –

3

Si está utilizando un archivo console.php para ejecutar la CLI es posible que lo puso allí.

<?php 

//something... 

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

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

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

//something else...