2014-01-22 63 views
4

我正在尋找連接到另一個數據庫來運行一些任意查詢,但不想使用實體和存儲庫等描述數據。 Symfony不會「擁有」這些數據或管理其中的任何信息。我只是在尋找的建議如何:Symfony2:連接到額外的數據庫,沒有所有額外的?

  1. 把連接參數在我config.yml文件(parameters.yml)使用的Symfony組件
  2. 連接做(?學說)運行準備的語句。

唯一類似的問題,我能找到的Temporary Connection to External Database with Symfony/Doctrine,但似乎適用於Symfony的1,因爲Doctrine_Manager在Symfony的不存在2

+0

好吧,聽起來你只需要[抽象層](http://www.doctrine-project.org/projects/dbal.html)的教義,而不是完整的ORM。只需創建一些包含您的自定義查詢的服務,然後離開您:) – Songo

回答

7

http://symfony.com/doc/current/cookbook/doctrine/multiple_entity_managers.html

展示瞭如何設置多個主義2 DBAL連接(忽略實體管理器部分)。

doctrine: 
dbal: 
    default_connection: default 
    connections: 
     default: 
      driver: "%database_driver%" 
      host:  "%database_host%" 
      port:  "%database_port%" 
      dbname: "%database_name%" 
      user:  "%database_user%" 
      password: "%database_password%" 
      charset: UTF8 
     customer: 
      driver: "%database_driver2%" 
      host:  "%database_host2%" 
      port:  "%database_port2%" 
      dbname: customer 
      user:  "%database_user2%" 
      password: "%database_password2%" 
      charset: UTF8 

這將產生一個名爲服務:doctrine.dbal.customer_connection您可以從服務容器拉。

DBAL連接是標準PHP PDO連接對象的薄包裝。

http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/data-retrieval-and-manipulation.html

演示如何使用的連接。基本上與PDO對象相同。

您也可以使用PDO對象本身創建一個服務。我沒有一個方便的例子,但很容易做到。這將完全消除對第二條理論的需要。

+0

謝謝!正是我需要的。我從Symfony文檔中看到了一點小小的偏見,因爲它們似乎意味着Symfony會擁有任何額外數據庫的數據。 – Brian

+0

到點...精確一如@Cerad :) – nifr