2011-12-21 62 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