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

在config.php中访问实体管理器,php,symfony,symfony-3.2,Php,Symfony,Symfony 3.2,在app/config/config.php中,我们可以: $container->loadFromExtension('doctrine', array( 'dbal' => array( 'driver' => 'pdo_mysql', 'host' => '%database_host%', 'dbname' => '%database_name%', 'user'

在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()
返回:

试图调用类的名为“getDoctrine”的未定义方法 “Symfony\Component\DependencyInjection\ContainerBuilder”

返回:

您请求了一个不存在的服务“条令”

返回:

您请求了一个不存在的服务 “条令、规范、实体和管理人”


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


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

你能详细解释一下你想达到什么目的吗?数据库参数通常在parameters.yml中设置,并使用这些变量%database\u host%自动插入配置文件中。即使您能够将条令服务注入config.php,也会出现矛盾。您无法访问尚未初始化的数据库,这完全是由该文件完成的。条令只是一个例子。我想修改参数等。为什么要修改参数?为什么不把参数直接放在文件中,放在它们所属的地方呢?谢谢,但是如何使用CompilerPass呢?这取决于您试图实现什么。你看过报纸了吗?
$container->get('doctrine')
$container->get('doctrine.orm.entity_manager')