2012-01-09 44 views
2

我遇到了Symfony2/Doctrine的問題。Symfony2/Doctrine - 加入Mysql和Sqlite實體

我開始想,我試圖做不可能的事,通過關係加入2個獨立的數據庫在一起。

  • 我有一個mysql數據庫和一個sqlite數據庫。
  • 我有2個捆綁包(每個都與每個數據庫之一交談)
  • 我有兩個實體管理器,映射工作正常。

我可以訪問每一個數據庫,通過它自己的實體管理器就好了,每個包可以訪問其他包實體管理器,並在這一方面這一切都運作良好。

SQLite數據庫被鎖定的另一個應用程序,我不得不使用它原樣。 MySQL數據庫是我的,可以做任何我需要的。

  • 在SQLite數據庫我有一個「項目」表
  • 在MySQL數據庫中我有一個「任務」表。
  • 一個項目可以有很多任務。

我的任務表有一個project_id字段,它填充了項目表中的ID。我想要做的是讓這種關係正常工作,這樣我就可以使用樹枝做更平常情況下用樹枝做的事情。即稱爲{{project.tasks}}{{tasks.projects}}

此刻,我已經得到了在項目控制器一些代碼,傳遞任務的意見,反之亦然。這確實起作用,但是非常麻煩。我真正想做的是讓ORM映射在每個實體之間正常工作。

主義/ Symfony2中能做到這一點,還是我試圖做不可能的事?

任何援助將不勝感激。

這裏是我的config.yml文件的摘錄。

orm: 
     auto_generate_proxy_classes: %kernel.debug% 
     default_entity_manager: agile 
     entity_managers: 
      glue: 
       connection:  glue 
       mappings: 
        WebplaceGlueBundle: ~ 
      agile: 
       connection:  agile 
       mappings: 
        WebplaceAgileBundle: ~ 

回答

1

我們有開放天空有類似的問題:我們有存儲在MongoDB的一些數據,以及一些存儲在MySQL。我們使用的擴展,STOF的DoctrineExtensions包:

https://github.com/opensky/DoctrineExtensionsBundle/tree/orm2odm_references_current

這讓我們增加ODM和ORM之間@Gedmo\ReferenceOne註釋。你可以直接在兩個ORM連接之間使用它,但是如果沒有,它會給你一個處理不同持久層之間關係的起點......

/** 
* @Gedmo\ReferenceOne(
*  type="document", 
*  class="MyBundle\Document\User", 
*  identifier="userId" 
*) 
*/ 
+0

感謝賈斯汀, 感謝您的答覆隊友, 我已經嘗試使用較長的公司\ SomethingBundle \實體\ SomeEntity符號在每個模型的ORM文件的直接映射了彼此之間的實體,但它看起來像每個實體仍然查看它自己的數據庫無關緊要的事情,即使實體處於單獨的數據庫中。然後我得到了一堆有關映射超類的錯誤消息... 可能不得不辭職到舊的控制器黑客得到它的工作..嘆氣.. – egruz 2012-01-11 05:10:16

+0

嗨egruz,關於這個問題的任何消息? – neuromancer 2012-04-13 15:32:50