2014-11-17 2 views
10

Конфигурация использует:Symfony: Что такое смысл auto_mapping и auto_generate_proxy_classes

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

Что такое точное значение auto_mapping? Он используется в тоннах примеров с истинным и ложным, и не содержит точного описания. Когда происходит генерация прокси, если она не авто? Посредством инструментов командной строки?

ответ

8

auto_mapping, где доктрина автоматически загружает отображение из вашего каталога Resources/config/doctrine.

Установка его на значение false означает, что вам нужно будет загружать сопоставления самостоятельно. Это может быть удобно, если у вас есть сопоставления для сущностей, а не сопоставленные суперклассы в комплекте поставщика, который вы хотите переопределить.

Вы можете сделать это либо путем сопоставления с указанием в доктрине конфигурации ...

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

, добавив их в какой-то 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 
      )); 
     } 
    } 
} 
Смежные вопросы