2012-03-10 112 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