2014-11-17 11 views

risposta

8

auto_mapping è dove doctrine caricherà automaticamente la mappatura dalla directory del gruppo Resources/config/doctrine.

Impostarlo su falso significa che è necessario caricare i mapping da soli. Può essere utile se si hanno mapping per entità piuttosto che superclassi mappate in un bundle di fornitori che si desidera sovrascrivere.

È possibile farlo sia attraverso indicando le mappature nella configurazione dottrina ...

doctrine: 
    orm: 
     entity_managers: 
      default: 
       mappings: 
        AcmeUnknownBundle: 
         mapping:    true 
         type:     yml 
         dir:     "Resources/config/doctrine" 
         alias:    ~ 
         prefix:    Acme\UnknownBundle\Entity 
         is_bundle:   true 

aggiungendoli in una sorta di mappings pass ...

class AcmeUnknownBundle extends Bundle 
{ 
    public function build(ContainerBuilder $container) 
    { 
     parent::build($container); 
     // ... 

     $modelDir = realpath(__DIR__.'/Resources/config/doctrine/model'); 
     $mappings = array(
      $modelDir => 'Acme\UnknownBundle\Model', 
     ); 

     $ormCompilerClass = 'Doctrine\Bundle\DoctrineBundle\DependencyInjection\Compiler\DoctrineOrmMappingsPass'; 
     if (class_exists($ormCompilerClass)) { 
      $container->addCompilerPass(
       DoctrineOrmMappingsPass::createYamlMappingDriver(
        $mappings, 
        array('acme_unknown.model_manager_name'), 
        true 
      )); 
     } 
    } 
}