访问 config.php 中的实体管理器

Access to entity manager in config.php

在app/config/config.php中我们可以:

$container->loadFromExtension('doctrine', array(
    'dbal' => array(
        'driver'   => 'pdo_mysql',
        'host'     => '%database_host%',
        'dbname'   => '%database_name%',
        'user'     => '%database_user%',
        'password' => '%database_password%',
    ),
));

但是可以在此文件中获取实体管理器吗?

$container->getDoctrine()

return:

Attempted to call an undefined method named "getDoctrine" of class "Symfony\Component\DependencyInjection\ContainerBuilder".

$container->get('doctrine')

return:

You have requested a non-existent service "doctrine"

$container->get('doctrine.orm.entity_manager')

return:

You have requested a non-existent service "doctrine.orm.entity_manager"

不,这不可能。您无法访问构建步骤中的服务。 您可以使用 CompilerPass 来访问服务和调用方法或别名。

或者如果您只想将 EntityManager 传递给服务,请使用 Reference class。