2011-12-21 65 views
2

我想要一個實體在一個Bundle中映射到另一個實體。我有:跨bundle的doctrine2映射可能嗎?

# KWI\SeniorProjectBundle\Entity\Project: 
use KWI\PeopleBundle\Entity\User; 

/** 
* @ORM\OneToOne(targetEntity="\KWI\PeopleBundle\Entity\User") 
*/ 
protected $mentor; 

尚未運行doctrine:schema:update提供了以下錯誤:

[Doctrine\ORM\Mapping\MappingException] 
Class KWI\PeopleBundle\Entity\User is not a valid entity or mapped super class. 

兩個實體駐留在不同數據庫(通過使用兩個單獨的DB連接兩個獨立的實體管理器實現)。

這甚至有可能完成?我覺得有不同的數據庫彼此之間有映射是很常見的。所以這應該是可能的,對吧?

回答

2

Doctrine似乎不支持跨數據庫的映射。將兩個實體移動到同一個實體管理器中可解決此問題。

+0

如果我只是想重新生成模式或映射,如何在進行模式更改時如何?現在,當您嘗試更新強制學習模式或轉儲sql時,ManyToMany關係中會出現錯誤的滴漏效應。你說的是在一側運行該實體(僅在一個控制器中定義),並從另一側調用它?例如。在兩側產生翻轉,除了過濾器在一側或另一側上的fk表?代中的 – blamb 2014-07-27 23:16:13

+0

就是我的意思。 – blamb 2014-07-27 23:22:04

0

targetEntity="\KWI\PeopleBundle\Entity\User"的類路徑中刪除第一個\,所以它看起來像targetEntity="KWI\PeopleBundle\Entity\User"

+0

不幸的是沒有改變任何東西,仍然是同樣的錯誤。 – Fabian 2011-12-21 15:07:17

+0

這很奇怪,因爲如果我用'\\'開頭,就會得到相同的錯誤。 – 2011-12-21 15:20:23