2014-11-17 8 views
10

Konfiguracja używa:Symfony: Jaki jest sens auto_mapping i auto_generate_proxy_classes

doctrine: 
dbal: 
    driver: "%database_driver%" 
    .... 
orm: 
    auto_generate_proxy_classes: "%kernel.debug%" 
    auto_mapping: true 

Jaki jest dokładny sens auto_mapping? Jest używany w tonach przykładów z prawdą i fałszem, bez dokładnego opisu. Kiedy pojawia się generowanie proxy, jeśli nie jest automatyczne? Za pomocą narzędzi wiersza poleceń doctrine?

Odpowiedz

8

auto_mapping to dokąd doktryna automatycznie załaduje mapowanie z twojego katalogu Resources/config/doctrine paczki.

Ustawienie wartości false spowoduje, że będziesz musiał samodzielnie załadować mapowania. Może być przydatny, jeśli masz odwzorowania dla obiektów, a nie zmapowane superklasy w pakunku dostawcy, który chcesz zastąpić.

Można to zrobić albo w drodze stwierdzenia mapowania w config doktryny ...

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

dodając je w jakimś 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 
      )); 
     } 
    } 
}