2013-07-02 42 views
0

嘿,夥計們,我知道,使用Doctrinebundle在Symfony2中,可以實例化原則下的多個數據庫連接...Doctrine2沒有Symfony2的多重數據庫?

$connectionFactory = $this->container->get('doctrine.dbal.connection_factory'); 
$connection = $connectionFactory->createConnection(array(
    'driver' => 'pdo_mysql', 
    'user'  => 'foo_user', 
    'password' => 'foo_pass', 
    'host'  => 'foo_host', 
    'dbname' => 'foo_db', 
)); 

我很好奇,如果這是,如果你使用,雖然學說鎺的情況?我已經通過像這樣作曲家設立主義......

{ 
    "config": { 
     "vendor-dir": "lib/" 
    }, 
    "require": { 
     "doctrine/orm": "2.3.4", 
     "doctrine/dbal": "2.3.4" 
    } 
} 

而且一直在尋找我的ConnectionFactory類,但我沒有看到它的任何地方?我需要使用Symfony2來做到這一點嗎?

我應該從DoctrineBundle下載ConnectionFactory.php並將它包含在我的DBAL文件夾中? IDK的?

謝謝!

+1

這是Symfony2/Doctrine問題還是隻是一個學說問題? –

+0

@ThomasPotaire只是一個學說問題,但它使用Symfony包類作爲它之前完成的例子。 – ehime

+0

ping,你得到了答案;) –

回答

1

bundle只在symfony所需的上下文中,它將orm包裝到symfony的基礎結構(服務等)中。爲了純粹使用orm,你應該閱讀ORM: Installation and Configuration。如你所見,你必須自己創建一個實體管理器,使用EntityManager::create($dbParams, $config),所以只需爲不同的數據庫創建不同的實體管理器。

對於DBAL使用你應該閱讀DBAL: Configuration看到,連接可以簡單地獲得槽DriverManager::getConnection($connectionParams, $config);但如果你確信ConnectionFactory沒有依賴於symfony的東西,你真的需要它,你可以嘗試把它複製到你的代碼並構建一個新的工廠來獲得一個DBAL連接。

$connectionFactory = new ConnectionFactory(array()); 
$connection = $connectionFactory->createConnection(array(
    'driver' => 'pdo_mysql', 
    'user'  => 'foo_user', 
    'password' => 'foo_pass', 
    'host'  => 'foo_host', 
    'dbname' => 'foo_db', 
)); 

,但照顧,這是一個DBAL連接,即是其坐落在PDO的頂部,只爲純粹的SQL查詢的一個抽象層。如果你需要一個實體管理器,你必須按照上面的文檔中提到的那樣初始化它,或者你可能找到另一個實體管理器工廠類,你可以「複製」它。

+0

問題在於在Doctrine2的典型安裝中沒有'ConnectionFactory類'。 Symfony2包中有類,但需要移植。主要的捕獲是在構造函數'array $ typesConfig'中,但我不知道他們真正要求的是什麼,我假定了magic.conf類型,但顯然情況並非如此...... – ehime

+0

正如我所說,你可以複製它。在標準的symfony安裝中,'$ typesConfig'似乎是一個空數組。但簡單調用'DriverManager :: getConnection($ connectionParams,$ config)'之間的區別在哪裏呢? –

相關問題