Symfony: В чем смысл auto_mapping и auto_generate_proxy_classes

В конфигурации используется:

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

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

Ответ 1

auto_mapping - это то, где doctring автоматически загружает отображение из вашего каталога 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

добавляя их в виде сопоставления сопоставлений...

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