2012-03-10 62 views

回答

1

您必须扩展Symfony\Bundle\DoctrineBundle\Registry类,并添加你自己的方法。

然后,所有你需要做的就是定义应用程序/配置/ config.yml例如一个服务名为“主义”:

// app/config/config.yml 
services: 
    doctrine: 
     class: MyDoctrineRegistry 
     arguments: [ @service_container ] 

在config.yml定义的服务会被加载最后,所以它将覆盖默认的一个。

如果你想更清洁,你必须使用重载的DependencyInjection /扩展服务:

$container->setAlias('doctrine', 'my_doctrine'); // my_doctrine is the name of you custom doctrine service 

在最后这种情况下,你必须确保你的包被加载核心软件包之后。

+0

当我尝试上面的解决方案时,出现此错误“ErrorException:可捕获的致命错误:传递给Symfony \ Bundle \ DoctrineBundle \ Registry :: __ construct()的参数1必须实现接口Symfony \ Component \ DependencyInjection \ ContainerInterface ,没有给出“。这是因为Registry类需要多个参数。任何想法如何处理? – JohnM2 2012-03-12 16:06:56

+0

是的,你的服务定义应该为你的构造函数提供参数,在这里它应该是“service_container”服务。查看更新后的帖子。 – Florian 2012-03-13 08:08:37

+0

注册表类的构造函数有5个必需的参数:__construct(ContainerInterface $容器,数组$连接,数组$实体管理器,$ defaultConnection,$ defaultEntityManager) – JohnM2 2012-03-13 13:08:36

0

您可以为连接指定包装类并指定其中的自定义方法。我之前用这个扩展了Doctrine的DBAL功能,它对我的​​用例非常有效。

详情点击这里:

https://stackoverflow.com/a/8242438/312962

+0

在这种情况下不需要,但我会在其他一些问题上使用此解决方案,谢谢。 – JohnM2 2012-03-11 13:05:04

+0

欢迎:) – 2012-03-11 17:30:59