2015-04-17 42 views
2

我的項目中有兩個數據庫。Symfony2 Doctrine DiscriminatorMap兩個數據庫

命名的第一個數據庫:global
第二個數據庫命名爲:first_db

全球數據庫有一個表CarMotofirst_db數據庫有表ItemsBusShip

在文章的下方可以看到表項的註釋。

* @ORM\Table(name="Items") 
* @ORM\InheritanceType("JOINED") 
* @ORM\DiscriminatorColumn(name="type", type="string") 
* @ORM\DiscriminatorMap({ 
*  "car" = "Project\ItemBundle\EntityGlobal\Car", 
*  "moto" = "Project\ItemBundle\EntityGlobal\Moto", 
*  "bus" = "Bus", 
*  "ship" = "Ship", 
* } 
*) 

當我創建DQL查詢不明白carmoto是在其他數據庫。我已經找到了一個β固溶如果實體CarMoto用這種方法

* @ORM\Table(name="global.Moto") 
* @ORM\Table(name="global.Car") 

在更新模式集註釋我沒有問題,但它不是很安全。我知道我可以編寫本地查詢,但我不確定它的最佳方式。

什麼是一個更好的方式來做到這一點不使用原生查詢?

回答

0

在從Symfony的一個基本設置你只使用1個數據庫,它是在parameters.yml定義。使用第二個數據庫是可以的,但讓一切更加複雜

使用多個數據庫(連接)可設置這樣的:http://symfony.com/doc/current/cookbook/doctrine/multiple_entity_managers.html

但是從不同的數據庫(連接)連接不同的實體是不可能的,看到這個答案:Using Relationships with Multiple Entity Managers

我建議你堅決看你的合併表到一個數據庫中,使您的生活輕鬆了許多。