簡體   English   中英

使用Symfony2和Doctrine2選擇動態數據庫

[英]Dynamic database selection using Symfony2 and Doctrine2

我遇到以下問題:我有一個核心數據庫,其中包含將我的登錄信息保存到其他數據庫的Doctrine實體。 注冊到我的應用程序的每個客戶端都將獲得自己的數據庫。 我使用子域來阻止必須使用哪個數據庫。 客戶端數據庫包含其他Doctrine實體,以保留客戶端的數據。

為了確定基於子域的數據庫,我檢查了Symfony 2:多個動態數據庫連接http://knpuniversity.com/screencast/question-answer-day/symfony2-dynamic-subdomains 我嘗試了提問者的解決方案和答案的解決方案。 給定的解決方案有效,但僅限於一部分。 我創建了一個能夠在Controller中的數據庫之間切換的服務,但是當我創建一個新的Entity時,Symfony總是希望在主數據庫上執行CREATE TABLE。

我希望Doctrine將表格划分到數據庫中。 我也試過Annotations,但我無法讓它工作。 有沒有人建議如何分離實體並將它們放在不同的數據庫中? 理想情況下,我應該能夠定義每個實體使用的數據庫。

附加信息:

Symfony 2.3

學說2

如果你有動態數據庫,可能連接到第二個實體管理器(對於ex動態):

doctrine:
  dbal:
    connections:
      default:
        # default configuration
      dynamic:
        # placeholder used to replace connection information
  orm:
    entity_managers:
      default:
        connection: default
      dynamic:
        connection: dynamic
        mappings:
          MyBundle:
            type: annotation
            dir: DynamicEntity # for ext \My\MyBundle\DynamicEntity\Item class

下次保存:

$em = $this->get('doctrine')->getManager('dynamic');
$em->persist(new \My\MyBundle\DynamicEntity\Item());
$em->flush();

您必須記住有關能源管理器映射配置的信息( 更多信息見symfony 2文檔 )。 如果沒有這個,您將能夠將每個實體放入兩個數據庫中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM