2014-11-17 7 views
10

Die Konfiguration verwendet:Symfony: Was ist die Bedeutung von auto_mapping und auto_generate_proxy_classes

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

Was ist die genaue Bedeutung von auto_mapping? Es wird in Tonnen von Beispielen mit wahr und falsch und ohne genaue Beschreibung verwendet. Wann tritt die Proxy-Generierung auf, wenn es nicht automatisch ist? Mit den Befehlszeilenwerkzeugen der Doktrin?

Antwort

8

auto_mapping ist, wo Doktrin automatisch das Mapping von Ihrem Bündel Resources/config/doctrine Verzeichnis laden wird.

Wenn Sie den Wert auf false setzen, müssen Sie die Mappings selbst laden. Dies kann nützlich sein, wenn Sie Zuordnungen für Entitäten anstelle von zugeordneten Superklassen in einem Lieferantenpaket haben, das Sie überschreiben möchten.

Sie können dies entweder über die Zuordnungen in der Lehre config unter Angabe ...

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

sie in irgendeiner Art von mappings pass Hinzufügen ...

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 
      )); 
     } 
    } 
} 
Verwandte Themen